【正解】A
【0からの解説】
本問の課題は2つあります。(1)「テンプレートを以前のバージョンに戻そうとすると問題が起きる」=バージョン管理がS3だけで不十分、(2)「本番デプロイ前に変更をレビューしたい」。これらを最小の運用オーバーヘッドで両立する仕組みが求められています。
CloudFormation Git sync(テンプレートのGit同期)は、CloudFormationスタックをGitリポジトリと直接同期させる機能です。テンプレートをGitに置き、AWS CodeConnections経由で接続すると、Gitへのコミット/マージを検知してCloudFormationが自動的にスタックをデプロイ・更新します。Gitを使うことでバージョン履歴とロールバック(以前のコミットに戻す)が自然に扱え、プルリクエスト(PR)ワークフローでマージ前のコードレビューが標準的に行えます。これにより、CodePipelineの複雑な配線や手動承認アクションを自前で組まなくても、「レビュー後にデプロイ」が成立します。Gitネイティブでパイプライン運用を簡素化できるため、運用オーバーヘッドが最小で、要件に最も適合します。
【誤りの選択肢】
B:既存のS3ベースのパイプラインに手動レビューアクションを足すだけでは、レビューはできても根本の「バージョン管理/ロールバックの脆弱さ(S3にテンプレートを置く構成)」が解決しない。
C:Lambdaで変更チェックを自前実装するのは、コードの開発・保守が必要で運用オーバーヘッドが増える。レビューの自動化要件にも厳密には合致しない。
D:GitリポジトリとCodeConnectionsを使い、ソースアクション+手動レビューを足す構成は要件を満たすが、パイプラインのステージ/アクション構成を自前で組む分、CloudFormation Git sync(A)よりも運用オーバーヘッドが大きい。「最も少ない運用オーバーヘッド」という基準ではAが上回る。
A:Git sync+PRワークフローで、バージョン管理・ロールバック・マージ前レビューをGitネイティブに実現し、運用負荷を最小化できる。
【参考】
Manage CloudFormation stacks with Git syncWhat is AWS CodeConnections?