【随時更新】AWS CloudFormationの細かすぎるTIPS集
【随時更新】AWS CloudFormationの細かすぎるTIPS集:
リソースの戻り値の例はこちら
!Ref
!GetAtt
同一リージョンに同じスタックを複数作成するときにExportの名前がかぶるからですね。
環境名じゃなくてスタック名とかでもOKです。
※でも、サービスが動いていてもイメージ/ リポジトリを削除することは可能。
Templates
空のディレクティブがあると怒られる
Outputs: #何も記載しない
DescriptionにはExportされる値の例を書いておくと嬉しい
Outputs: ECSCluster: Description: A reference to ECS cluster name. ex) dev-Cluster Value: !Ref TheECSCluster Export: Name: !Sub ${Env}-Cluster
!Ref
!GetAtt
Export Nameの頭にも環境名をつけちゃう
同一リージョンに同じスタックを複数作成するときにExportの名前がかぶるからですね。環境名じゃなくてスタック名とかでもOKです。
# 例1 Name: !Sub ${Env}-Cluster # 例2 (こんな書き方もできる) Name: !Join [ "-", [ "Ref":"AWS::StackName", "vpcid"]]
Deploy
cfn-lintで一括lint
find ./cfn/templates -type f | xargs --no-run-if-empty cfn-lint
create/update-stack と deploy で微妙に挙動が違う
- テンプレートファイルを指定するときのパスの書き方が違う
# create/update-stack --template-file "file://cfn/banana.yaml" \ # deploy --template-file "file://cfn/banana.yaml" \
- deployではcli-input-jsonが利用できない
パラメータを外出ししたいときに、オプションから指定することしかできないのでちょっと不便です。
リソースに変更がなくても強制的にupdateしたい場合は、毎回タグを更新する
aws cloudformation deploy \ ...... --tags date="$(date '+%Y%m%d%H%M%S')"
コメント
コメントを投稿