無限ノック › SOA 練習問題一覧 › 問題
SOAデプロイ、プロビジョニング、および自動化

ある企業の開発チームはAWS CDKでインフラをコード管理しており、dev・staging・prodの3つのAWSアカウントへのデプロイパイプラインを構築したいと考えています。要件は以下の3点です。 ① CDKコードの変更がリポジトリにプッシュされるとパイプライン自体も自動更新(セルフミューティング)される ② 各環境間に手動承認ゲートを設ける ③ パイプラインの定義もバージョン管理されたコードとして管理する 最も少ない実装工数でこれらを満たす方法はどれですか?

A
AWS CodePipelineをマネジメントコンソールで手動設定し、CodeBuildプロジェクトにcdk deployコマンドを組み込んだステージを開発・ステージング・本番の各環境に作成する
マネジメントコンソールでの手動設定はパイプライン定義がコードとして管理されず(要件③違反)、セルフミューティング機能も提供されません(要件①違反)。環境を追加するたびにコンソール手動操作が必要で、実装工数も増加します。
B
CDK PipelinesライブラリのCodePipelineクラスでパイプラインをコード定義し、addStage()で各環境ステージを追加してManualApprovalStepで承認ゲートを挿入する
✓ 正解
CDK PipelinesのCodePipelineクラスは、セルフミューティング(要件①)・addStage()による宣言的な環境追加・ManualApprovalStepによる承認ゲート(要件②)・コードとしてのパイプライン定義(要件③)をすべてネイティブにサポートしており、3要件を最少の実装工数で満たします。
C
GitHub Actionsワークフローファイルでcdk deployコマンドを実行し、GitHub Environmentsの保護ルール(Required Reviewers)で各環境間の承認ゲートを制御する
GitHub ActionsはCDKデプロイの自動化には使用できますが、CDK Pipelinesが提供するセルフミューティング機能(CDKコード変更によるパイプライン自動更新)を持ちません。AWSクロスアカウントデプロイの設定もCDK Pipelinesより複雑になります。
D
AWS Step Functionsのステートマシン定義でCDKデプロイタスクを各環境分順次定義し、環境間の手動承認をSNS TaskTokenパターンで実装する
AWS Step FunctionsはLambdaやECSなどのワークフローオーケストレーションに適していますが、CI/CDパイプラインとして設計されたサービスではありません。セルフミューティング機能を持たず、TaskTokenによる承認ゲート実装など追加開発が大幅に増加します。

解説

CDK Pipelinesは、AWS CDKアプリケーション専用に設計されたCI/CDフレームワークです。`pipelines.CodePipeline`クラスでパイプラインをコードとして定義でき、CDKコードの変更がリポジトリにプッシュされると次のパイプライン実行時にパイプライン自体が自動更新(セルフミューティング)される機能を標準で提供します。`addStage()`で各AWSアカウント/環境を宣言的に追加し、`ManualApprovalStep`で承認ゲートを挿入できるため、3つの要件をすべて最少のコードで実装できます。 選択肢AのマネジメントコンソールによるCodePipeline手動設定は、パイプライン定義がコードとして管理されず(要件③違反)、セルフミューティング機能も持ちません(要件①違反)。 選択肢CのGitHub ActionsはCDKデプロイの自動化に使用できますが、CDK Pipelinesのセルフミューティング機能(パイプライン自体の自動更新)を提供しておらず、要件①を満たしません。 選択肢DのAWS Step FunctionsはCI/CDパイプラインとして設計されたサービスではなく、承認ゲートの実装(SNS+TaskToken)など追加開発が大幅に必要となり、セルフミューティング機能もありません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでSOAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← SOA の問題一覧に戻る