[アップデート] AWS CloudFormation の Git 同期構成時にリポジトリとリソースの同期ステータス変更イベントが EventBridge で取得できるようになりました
いわさです。
AWS CloudFormation には Git 同期という機能があります。
2 年前の re:Invent 2023 あたりで登場した機能で、外部の Git リポジトリのテンプレートと CloudFormation スタックを同期させることが出来ます。
先日のアップデートでリポジトリ同期ステータスとリソース同期ステータスの変更イベントが EventBridge 経由で取得出来るようになったそうです。
このイベント変更をトリガーに追加のデプロイを行うパターンがあまり想像出来ない(スタックの変更イベントなどを使うほうが自然な気がする)ので、おそらくは主に同期ステータスの監視用途で使うことになるのではと思っています。
試しに使ってみたところ、いつもとは違うイベントソースで「おっ」と思ったのでちょっと紹介したいと思います。
Git 同期された CloudFormaiton スタックを用意
まずは Git 同期された CloudFormation スタックが検証の中で必要になるので用意したいと思います。
細かい手順は今回は割愛しますが、次のリポジトリに必要なデプロイファイルとテンプレートファイルを格納しています。
CloudFormation スタックの内容としては適当な VPC が作成されるだけです。
マネジメントコンソールから CloudFormation スタックを新規作成します。
作成する際のテンプレートソースの選択で「Git から同期」を選択します。
あとはデプロイファイルやらを選択してスタックを作成します。
CodeConnection 接続周りの認証・認可が問題なければ次のようにスタック作成後に同期に成功するはずです。
まぁここまでは従来どおりです。
EventBridge でルールを設定する
ここからが今回のアップデートで出来るようになった点です。
EventBridge で同期ステータス変更イベントをフックするルールを作成出来るようになりました。
今回のアップデートではリポジトリ同期ステータスと、リソース同期ステータスの2つのイベントが取得できます。
各イベントデータの仕様は次のドキュメントに記載されています。
設定方法ですが、早速イベントパターンが既に提供されていますのでそちらを使うことが出来ます。
一点注意点がありまして、イベントソースは「CloudFormation」でも「AWS CodeStar Connections」でもなくて、「CodeConnections」であることに注意しましょう。
このイベントパターンの場合は次のイベントタイプが選択出来るようになっています。
- GitSync Repository Sync Status Change
- GitSync Resource Sync Status Change
今回はこちらのイベントをトリガーに SNS への通知を行うだけの単純なアクションを設定しました。
同期変更イベントを発生させてみる
では同期変更イベントを発生させてみます。
ここではリポジトリ構成を変更することで、再同期が発生してステータス変更が行われるのでその方法を使ってみます。
変更後即座にイベントを受信していました。
2つイベントが発生しており、ステータスを見てみるとINITIATED
ステータスが最初に発生し、その後SUCCEEDED
ステータスに変更されたことが確認出来ます。
{
"version": "0",
"id": "b692759e-02e9-9f95-0f05-f9376532d20a",
"detail-type": "GitSync Repository Sync Status Change",
"source": "aws.codeconnections",
"account": "123456789012",
"time": "2024-07-31T22:34:01Z",
"region": "ap-northeast-1",
"resources": [
"arn:aws:codestar-connections:ap-northeast-1:123456789012:connection/672805cc-55cf-4884-99b4-51cafe769da8"
],
"detail": {
"connectionArn": "arn:aws:codestar-connections:ap-northeast-1:123456789012:connection/672805cc-55cf-4884-99b4-51cafe769da8",
"providerType": "GITHUB",
"repositoryName": "hoge0801-cfn-gitsync",
"repositoryArn": "arn:aws:codestar-connections:ap-northeast-1:123456789012:repository-link/41cbb6e1-71f6-47c3-ad61-92652a1b2afb",
"repositoryLinkId": "41cbb6e1-71f6-47c3-ad61-92652a1b2afb",
"ownerId": "Tak1wa",
"commit": null,
"branch": "main",
"syncType": "CFN_STACK_SYNC",
"status": "INITIATED",
"previousStatus": null
}
}
{
"version": "0",
"id": "f1f39180-2125-74e7-2730-2f09fd5a2963",
"detail-type": "GitSync Repository Sync Status Change",
"source": "aws.codeconnections",
"account": "123456789012",
"time": "2024-07-31T22:34:05Z",
"region": "ap-northeast-1",
"resources": [
"arn:aws:codestar-connections:ap-northeast-1:123456789012:connection/672805cc-55cf-4884-99b4-51cafe769da8"
],
"detail": {
"connectionArn": "arn:aws:codestar-connections:ap-northeast-1:123456789012:connection/672805cc-55cf-4884-99b4-51cafe769da8",
"providerType": "GITHUB",
"repositoryName": "hoge0801-cfn-gitsync",
"repositoryArn": "arn:aws:codestar-connections:ap-northeast-1:123456789012:repository-link/41cbb6e1-71f6-47c3-ad61-92652a1b2afb",
"repositoryLinkId": "41cbb6e1-71f6-47c3-ad61-92652a1b2afb",
"ownerId": "Tak1wa",
"commit": "4915887d7f67d31c49381ee5c40d6cb9ee1c4a43",
"branch": "main",
"syncType": "CFN_STACK_SYNC",
"status": "SUCCEEDED",
"previousStatus": "INITIATED"
}
}
エラーとかのイベントや紐づくデータも取得出来ますね。
取得出来るイベントについては AWS CLI のステータス取得コマンドを参考にすると良さそうでした。
さいごに
本日は AWS CloudFormation の Git 同期構成時にリポジトリとリソースの同期ステータス変更イベントが EventBridge で取得できるようになったので試してみました。
Git 同期でリソース管理している際に、プルリクエストは処理されたが実は同期部分で失敗していた。みたいなのはインパクトがあるので、監視には特に使えそうですね。