読者です 読者をやめる 読者になる 読者になる

sbt-aws-cloudformationの使い方

sbt プラグインからAWSのCloudFormationを使う場合の手順です。

準備

sbt プロジェクトの project ディレクトリの plugins.sbt に次の内容を追記します

addSbtPlugin("com.pigumer.sbt.cloud" % "sbt-aws-cloudformation" % "2.2.0")

build.sbt に import と Plugin を有効にする設定を記述します

import cloudformation._

lazy val root = (project in file(".")).
  enablePlugins(CloudformationPlugin).
  settings(
    version := "0.1",
    scalaVersion := "2.12.2",
    awscfSettings := AwscfSettings(
      projectName = Some("example/"),
      region = "ap-northeast-1",
      bucketName = "YOUR BUCKET NAME",    // テンプレートをアップロードするS3バケット名
      templates = file("cloudformation")             // アップロードするテンプレートを作成したディレクトリ
    ),
    awscfStacks := Map("ALIAS" → CloudformationStack(  // スタック名のエイリアス
      stackName = "STACK_NAME",
      template = "YOUR_TEMPLATE_FILENAME",
      parameters = Map("KEY""VALUE"),
      capabilities = Seq("CAPABILITY_NAMED_IAM")),
      ttl = Seq(AwscfTTLSettings(
        tableName = "DYNAMODB TABLE NAME",
        attributeName = "TTL ATTRIBUTE NAME",
        enabled = TTL_ENABLED))               // TTLを有効(true)または無効(false)にするBoolean値を設定します
  )

awscfSettings の設定項目は次の通りです

  • projectName - プロジェクト名は任意で、S3バケットのキーに追加されます。
  • region - リージョンを指定します。
  • bucketName - S3のバケット名です。
  • templates - テンプレートを作成したディレクトリを設定します。
  • roleARN - クラウドフォーメーションを実行するロールを指定する場合は、roleARNを記述します。

awscfStacks は、スタック名のエイリアスをキーとするマップで設定します。マップの値は CloudformationStack です。

CloudformationStack はスタック定義を設定します。

  • stackName - スタック名
  • template - テンプレートファイル名(iam.yaml等)
  • parameters - テンプレートのパラメータに渡す値
  • capabilities - IAMロールのスタックの場合等に"CAPABILITY_IAM"や"CAPABILITY_NAMED_IAM"等の値を設定します
  • ttl - DynamoDB スタックで作成(awscfCreateStack)や更新(awscfUpdateStack)を行った後に、TTLを使用する場合に AwscfTTLSettings の Seq を設定します

AwscfTTLSettings は DynamoDB の TTL の設定に使用します。

  • tableName - テーブル名
  • attributeName - TTL に使用する項目名(expiration等)
  • enabled - 有効にする場合は true、無効にする場合は、falseを設定します

タスク

sbt コマンドを実行します。

sbt

テンプレートをアップロードするS3バケットの作成

awscfCreateBucket <stackName>

指定したスタック名でS3バケットを作成します(CloudFormationを使用します)

テンプレートのアップロード

awscfUploadTemplates <stage>

テンプレートディレクトリにあるファイルをS3にアップロードします。開発用(dev)、プロダクション用(production)に異なるバージョンのファイルをアップロードできるように、stageを指定する仕様となっています。

スタックの作成

awscfCreateStack <stage> <shortName>

shortName にはスタックのエイリアスを指定します。

スタックの更新

awscfUpdateStack <stage> <shortName>

スタックの削除

awscfDeleteStack <stage> <shortName>

Exportsの確認

awscfListExports

その他詳細、最新情報はhttps://github.com/PigumerGroup/sbt-aws-cloudformationを参照してください