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を参照してください