DOPSDLC の自動化
開発チームはAWS CodeCommitをソースリポジトリとして使用しており、フィーチャーブランチごとに独立したテスト環境(エフェメラル環境:PRのライフサイクルに連動した一時的な環境)を自動でプロビジョニングし、プルリクエストがマージされたら自動的に削除したい。このエフェメラル環境の実装において最も適切なアプローチはどれですか?(注:CodeCommitは2024年7月以降、新規顧客の受付を停止しており、既存ユーザー向けサービスとして継続中です)
ACodePipelineにブランチフィルターを設定し、各ブランチに専用パイプラインを手動で作成する
CodePipelineにブランチフィルターを設定し、各ブランチに専用パイプラインを手動で作成する方法はブランチ数増加に対してスケールしません。
BCodeCommitのPR作成・マージイベントをEventBridgeで捕捉し、CDKデプロイとスタック削除をLambdaでトリガーする
✓ 正解
pullRequestCreatedイベントでCDKスタックを作成し、pullRequestMergeStatusUpdatedイベントでスタックを削除するLambdaをトリガーすることで、PRのライフサイクルに完全連動したエフェメラル環境を自動管理できる。
CAWS CodeStarConnectionsを使用してGitHubと連携し、GitHub Actionsでエフェメラル環境を管理する
AWS CodeStarConnectionsを使用してGitHubと連携し、GitHub Actionsでエフェメラル環境を管理する方法はAWS外部ツールへの依存が生じ、CodeCommit環境ではAWSネイティブなEventBridgeイベント連携より複雑でコントロールが分散します。
DAWS CloudFormation Stack Setsを使用して各ブランチ用のスタックを自動作成・削除する
AWS CloudFormation Stack Setsはマルチアカウント/マルチリージョン展開用であり、単一アカウント内のブランチ単位の環境管理には不適切です。
解説
エフェメラル環境はEventBridge + Lambda + CDK/CloudFormationの組み合わせで完全自動化できます。CodeCommitのpullRequestCreatedイベントでスタックを作成し、pullRequestMergeStatusUpdatedイベントでスタックを削除することで、PRのライフサイクルに環境を連動させられます。
選択肢AのCodePipelineにブランチフィルターを設定し、各ブランチに専用パイプラインを手動で作成する方法はブランチ数増加に対してスケールしません。
選択肢CのAWS CodeStarConnectionsを使用してGitHubと連携し、GitHub Actionsでエフェメラル環境を管理する方法はAWS外部ツールであるGitHub Actionsへの依存が生じ、CodeCommit環境においてはAWSネイティブなEventBridgeイベント連携より複雑でコントロールが分散します。
選択肢DのAWS CloudFormation Stack Setsを使用して各ブランチ用のスタックを自動作成・削除する方法はマルチアカウント/マルチリージョン展開用であり、単一アカウント内のブランチ単位の環境管理には不適切です。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDOPを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →