kakakakakku blog

Weekly Tech Blog: Keep on Learning!

AWS CloudFormation の Git sync を既存スタックに導入する

GitHub リポジトリなどにプッシュをしたら自動的にトリガーされて AWS CloudFormation スタックをデプロイできる「Git sync 機能」で,そういえば「既存スタックって途中から Git sync できる?」と疑問に感じて試してみた❗️結論から言うと既存スタックを Git sync できる👌

docs.aws.amazon.com

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 機能でプルリクエストを出したら自動的に変更セットを作ってくれると開発フロー的にはもっと使いやすくなるんだけどなぁ〜❗️期待値して待とう \( 'ω')/