GitHub リポジトリなどにプッシュをしたら自動的にトリガーされて AWS CloudFormation スタックをデプロイできる「Git sync 機能」で,そういえば「既存スタックって途中から Git sync できる?」と疑問に感じて試してみた❗️結論から言うと既存スタックを Git sync できる👌
GitHub で試したログを簡単にまとめておく📝 ちなみに AWS CodeConnections 設定・IAM Role などは準備ができている前提とする.
AWS CloudFormation スタックを準備する
今回はシンプルに Amazon SQS キューを1つ追加する template.yml
を実装する.
Resources: Queue: Type: AWS::SQS::Queue Properties: QueueName: sandbox-cfn-stack-git-sync ReceiveMessageWaitTimeSeconds: 20
AWS CLI でデプロイする.
$ aws cloudformation deploy \ --stack-name sandbox-cfn-stack-git-sync \ --template-file template.yml
Git sync を設定する
次にマネジメントコンソールから Git sync を設定する.Git sync に必要なデプロイファイル deployment.yml
は必要最低限にしてある👌(デプロイファイルを用意しているのに自動的にデプロイファイル追加のプルリクエストが作られる挙動はちょっと微妙だと思う...)
template-file-path: template.yml parameters: {} tags: {}
AWS CloudFormation テンプレートを更新する
今回は Amazon SQS キューの可視性タイムアウト (VisibilityTimeout
) をデフォルト値の 30秒
から 60秒
に更新する💡
Resources: Queue: Type: AWS::SQS::Queue Properties: QueueName: sandbox-cfn-stack-git-sync ReceiveMessageWaitTimeSeconds: 20 VisibilityTimeout: 60
GitHub リポジトリにプッシュをすると期待通りにデプロイされていた👌
Before
$ aws sqs get-queue-attributes \ --queue-url https://sqs.ap-northeast-1.amazonaws.com/000000000000/sandbox-cfn-stack-git-sync \ --attribute-names All | grep VisibilityTimeout "VisibilityTimeout": "30",
After
$ aws sqs get-queue-attributes \ --queue-url https://sqs.ap-northeast-1.amazonaws.com/000000000000/sandbox-cfn-stack-git-sync \ --attribute-names All | grep VisibilityTimeout "VisibilityTimeout": "60",
ちなみに
2024年8月16日に What's New に出たのにその後 404 になってしまった「AWS CloudFormation Git sync now supports pull request workflows to review your stack changes」というリリースはどうなったんだろう💨 AWS CloudFormation の Git sync 機能でプルリクエストを出したら自動的に変更セットを作ってくれると開発フロー的にはもっと使いやすくなるんだけどなぁ〜❗️期待値して待とう \( 'ω')/