【随時更新】AWS CloudFormationの細かすぎるTIPS集

【随時更新】AWS CloudFormationの細かすぎるTIPS集:


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')" 


DynamoDBは一度に10個以上作成・更新・削除できないので、一つのテンプレートにまとめて記述すると後から困ることがある


CloudFrontはリソース作成・削除に15分くらいかかる


Delete


ECRのリポジトリはイメージが保存されていると削除できない

※でも、サービスが動いていてもイメージ/ リポジトリを削除することは可能。


ECSではサービスが動いているとクラスタを削除できない。


スタック削除を実行したのち、そのスタックのリソースを利用する手動作成したRDSを削除を実行すると、タイミングによってはスタックで管理されたDBSubnetGroupが削除されないことがある

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)