CloudFormationの新機能「Git Sync」をGitLabで試してみた #AWSreInvent

AWS re:Invent 2023期間中(直前?)に発表されたGit Sync、連携先のリポジトリにGitLabも選択できるので、実際に試してみました
2023.12.22

本記事はクラスメソッド DevOps・セキュリティのカレンダー | Advent Calendar 2023の22日目の記事です。

日本時間で 11/27 早朝に発表されたCloudFormationの新機能、Git Sync(Git 同期)、みなさんはもう試されましたでしょうか。

公式のアナウンス(日本語)はこちらになります。

こちらの機能、本格的な CI/CD を構築するにはシンプル過ぎるのではと思われますが、ちょっとした「CFnをGit管理したい」というアドホック運用目的としては、個人的に可能性を感じる機能です。なぜCodeCommitに対応していない。。。

とはいえ試さずに語るのも論外なので、早速試してみました。まだあまり世に情報がでてなさそうな、GitLabとの連携でやってみます。

準備 1

この機能を試す前に必要なものとして、こちらのドキュメントにまとまっていました。

  • Gitリポジトリ
  • CFnテンプレート
  • IAMロール

まずGitリポジトリですが、今回は単純に下記のCFnテンプレートがひとつだけ入っているものを用意しました。

CFnのテンプレートは、AmazonEC2FullAccess ポリシーをもつIAMロールを作成するだけのシンプルなものです。

IAMロールは、Git Syncの設定をするときに自動生成させることもできるようなので、ここでは置いておきます。

準備 2

この用途で使用するGitリポジトリは、AWSのDeveloper Toolsで接続されている必要があります。

この接続をとおして、pullしたりマージリクエストを出したりしてくれるわけですね。

というわけで接続します。
GitLabとの接続は下記のドキュメントに従います。

GitLabにログインした状態で Connect to GitLab をクリックすると認可(Authorize)画面が開くので、内容を読んだ上で「Authorize」しましょう。

するとまたAWSのマネジメントコンソールに戻ってくるので、「接続」をクリックします。

これで利用可能になりました。準備完了です!

やってみる

それでは、こちらのドキュメントに従って実施していきましょう。

Step 1: Create stack

新しいスタックを作成する際、CFnテンプレートを「Git から同期」するように指定します。

Step 2: Specify stack details

詳細を埋めていきます。
正常に接続ができていれば、接続名やその後のリポジトリ名、ブランチ名もプルダウンメニューから選択することが出来るはずです。

今回は、必要となる Deployment File は作成してもらうことにしました。
テンプレートファイルのファイル名とパラメータを適切に指定して、「次へ」をクリックします。

Step 3: Configure stack options

スタックオプションの設定をして「次へ」をクリックしてください。

Step 4: Review and deploy

最終的な確認画面が表示されます。
問題なければ「送信」をクリックしてください。

どうなる?

しばらくすると、CFnスタックが作成され「CREATE_COMPLETE」状態になると思います。

ですがこの時点では、指定したCFnテンプレートのリソースが作成されたわけではありません。
GitSyncSetupWaitCondition というリソースが作成され、Git Syncの準備が整った感じです。

一方でGitLabのリポジトリには、Deployment fileをマージするためのマージリクエストが作成されています。

特に問題ないと思うのでマージしてしまいましょう。

このあとはGitHub等と流れは同じですね。
リポジトリへのコミットを検出して、指定したCFnテンプレートからリソースが作成されたら成功です。失敗したときには権限周りとか確認してみて下さい!

まとめ

CFnのGit Sync(Git同期)機能をGitLabから動かしてみました。
本格的なCI/CDやGitOpsを行うには物足りなさもある機能と思いますが、日々のちょっとした労苦を解消する目的で使うぶんには使い出がある機能に感じました。

使えそうなところがあれば試してみてください!