無限ノック › DOP 練習問題一覧 › 問題
DOPSDLC の自動化

ある企業の DevOps チームは AWS CDK(Cloud Development Kit)でインフラとアプリケーションを定義しており、次の要件を持つ CI/CD パイプラインを構築したいと考えています。 ①パイプライン定義自体(CDK コード)の変更がリポジトリに push されたら人手を介さずパイプラインが自己更新される。 ②dev → staging → prod の順にデプロイされ、prod への昇格前に手動承認ステップが入る。 この要件を最も適切かつシンプルに実現する方法はどれですか?

A
CodePipeline をマネジメントコンソールで手動設定し、各ステージに CloudFormation デプロイアクションを追加する。CDK コードが変更されてもパイプライン定義は自動更新されず、運用チームが手動でコンソールを更新して反映する必要がある
CodePipeline をコンソールで手動設定する方法では、CDK コードの変更時にパイプライン定義を自動更新する仕組みがなく要件①を満たせません。また手動での更新作業は運用負荷が高く、DevOps のベストプラクティスに反します。
B
CDK Pipelines(aws-cdk-lib/pipelines の CodePipeline クラス)を使用してパイプラインを定義する。self-mutation により CDK コード変更の push 時にパイプラインが自動更新され、Stage と ManualApprovalStep で prod 前の手動承認を宣言的に設定できる
✓ 正解
CDK Pipelines の self-mutation 機能により CDK コードを push するだけでパイプライン定義が自動更新されます(要件①)。Stage と ManualApprovalStep を組み合わせて prod 前の手動承認も宣言的に実装でき(要件②)、最もシンプルな解法です。
C
CodeCommit の main ブランチへの push を EventBridge で検知し、Lambda 関数が AWS SDK の UpdatePipeline API を呼び出してパイプライン定義を動的に再構成する。実装・保守コストが高く要件をシンプルに満たせない
EventBridge と Lambda で UpdatePipeline API を呼び出す方式は自動更新を実現できますが、カスタムロジックの開発・テスト・保守コストが大きく CDK Pipelines より複雑です。「シンプルに実現」という要件を満たしません。
D
AWS Service Catalog で CDK テンプレートを製品として登録し、各環境へのデプロイは Service Catalog のポートフォリオ制約を使って承認ワークフローを手動で管理する。パイプラインの自己変異機能は提供されない
AWS Service Catalog は製品カタログの管理に使うサービスであり、CDK パイプラインの自己変異(self-mutation)機能は提供されません。要件①の自動更新を実現できないため不適切です。

解説

CDK Pipelines の自己変異(Self-Mutating)パイプラインは、CDK コードが変更されると最初のステージでパイプライン自体を自動更新してから後続ステージを実行する仕組みを持ち要件①を満たします。各デプロイ環境は Stage クラスで定義し addStage() に ManualApprovalStep を渡すことで要件②の prod 手動承認も宣言的・シンプルに実装できます。 選択肢AのCodePipelineコンソール手動設定は、運用負荷が高く、パイプライン定義の変更を自動反映できません。 選択肢CのEventBridge+Lambda 方式は、カスタムコードの維持コストが大きいため、自動更新メカニズムとしては非効率です。 選択肢DのAWS Service Catalogは、CDK テンプレート製品化には適していますが、パイプラインの自己変異機能を提供しません。

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

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

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