AWS re:Invent 2023が行われている中、我が家にプレゼントが届きました!
かわいくてかわいくて仕方ありません。ずっと見ていられます。
さて、最近のAWSのNewsの中に個人的に気になるものがいくつか(いくつも)ありましたので、そのうちの1つをこの記事でご紹介したいと思います!
ピックアップしたニュース
AWS CloudFormationがGit syncをサポートするようになり、リモートGitリポジトリに保存されたCloudFormationテンプレートからスタックと同期できるようになりました。東京リージョンでも一般利用が可能です。
AWS CloudFormation introduces Git management of stacks, What's New, 2023/11/26
なぜピックアップしたのか?
特にチームで作業するときには、作成したCloudFormationテンプレートを共同で管理することになります。
一時的に使うだけなら共有ストレージに置いておくこともありますが、再利用をする場合は、バージョン管理を行うために、Gitリポジトリで管理することが多いのではないかと思います。
これまでは、システム的にテンプレートとスタックの同期をとることができなかったので、運用を工夫することによってテンプレートとスタックの内容が不一致になることを防いでいました。
例えば以下のような工夫です。
-
AWS環境を直接変更しないというルールを設ける
-
CloudFormationのテンプレート更新ルールを設ける
(例)まずCloudFormationのテンプレートを更新 → チームでレビュー → 問題なければGitリモートリポジトリにPush -
Pushしたテンプレートと同じものをAWS環境に適用して、スタックを更新
今回のUpdateによって、Gitリポジトリにテンプレートの変更を反映すると、CloudFormationのスタックにも自動反映されるため、上の例だと3を実行する手間を省くことができますし、3で誤ったテンプレートを適用してしまうミスを防止することができます。
試してみた感想
ステップバイステップで操作手順を説明することは割愛しますが(きっと誰かが実施してくれているはず・・・)、下の図のように、CloudFormationのスタックの作成時、テンプレートソースに「Gitから同期」を選ぶことが出来るようになっています。
接続可能なリポジトリプロバイダーは以下でした。
- GitHub
- GitHub Enterprise Server
- GitLab
- Bitbucket
どのブランチとスタックを同期するかを指定することもできました。
なお、複数のAWSアカウント環境でCloudFormationを利用するときはStackSetsを使うケースもあるのではないかと思いますが、StackSetsの作成では、Gitからの同期を選択することはできませんでした。
仮に選択できたとしても、共通のテンプレートを多数のAWSアカウントやリージョンのスタックと同期することになるため、Gitのブランチ戦略どうするか? など追加の検討が必要になって(面倒になって)、結局使わないかもしれません。
まとめ
AWS CloudFormationがGit syncをサポートするようになったため、その機能を使えば、GitリポジトリのCloudFormationテンプレート(コード)をAWSスタック(インフラ)に継続的に同期して適用することができるようになりました。
Gitのコードを見ればインフラがどのような状態にあるかを把握できるようになると素敵だなぁと思う反面、万が一ドリフトが起きたときには恐怖を感じそうです。
個人的にはどんどん使いたい機能ですが、業務で利用する際は、やはり、失敗したときにどうするか? しっかり準備をして使いたいと思います。
最後まで読んでいただきありがとうございました!