sbt-aws-cloudformationの使い方

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

準備

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

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

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

import cloudformation._

lazy val root = (project in file(".")).
  enablePlugins(CloudformationPlugin).
  settings(
    version := "0.1",
    scalaVersion := "2.12.6",
    awscfSettings := AwscfSettings(
      projectName = Some("example/"),
      region = "ap-northeast-1",
      bucketName = "YOUR BUCKET NAME",    // テンプレートをアップロードするS3バケット名
      templates = file("cloudformation")             // アップロードするテンプレートを作成したディレクトリ
    ),
    awscfStacks := Stacks(
      Alias("ALIAS") → CloudformationStack(  // スタック名のエイリアス
        stackName = "STACK_NAME",
        template = "YOUR_TEMPLATE_FILENAME",
        parameters = Map("KEY""VALUE"),
        capabilities = Seq("CAPABILITY_NAMED_IAM")))
    )

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

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

awscfStacks は、スタック名のエイリアスと CloudformationStack を設定します。

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

  • stackName - スタック名
  • template - テンプレートファイル名(iam.yaml等)
  • parameters - テンプレートのパラメータに渡す値
  • capabilities - IAMロールのスタックの場合等に"CAPABILITY_IAM"や"CAPABILITY_NAMED_IAM"等の値を設定します

タスク

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

sbt

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

awscfCreateBucket <stackName>

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

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

awscfUploadTemplates

スタックの作成

awscfCreateStack <shortName>

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

スタックの更新

awscfUpdateStack <stage> <shortName>

スタックの削除

awscfDeleteStack <shortName>

Exportsの確認

awscfListExports

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