DVAデプロイ
ある企業がAWS CodePipelineを使ってCI/CDパイプラインを構築しています。テスト環境へのデプロイは完全自動化されていますが、本番環境へのデプロイは開発リードによる明示的な承認を必須とし、未承認のまま放置された場合は一定期間後に自動的にパイプラインを失敗させたいと考えています。最小の実装コストでこの要件を実現する方法はどれですか?
Aテストステージ後にLambda関数アクションを追加してSNS通知を送り、承認者のレスポンスをWebhookコールバックで受け取る仕組みを独自実装する
Lambda関数によるWebhookカスタム実装は技術的には実現可能ですが、コールバックURL管理・認証・エラーハンドリング・タイムアウト管理など独自実装が必要となり、Manual Approvalより大幅に実装コストが高くなります。
BCodePipelineのステージ間にManual Approvalアクションを追加し、SNSトピックを設定して承認者への通知と自動タイムアウトを組み込む
✓ 正解
CodePipelineのManual Approvalアクションは追加コーディング不要で承認ゲートを実装できる組み込み機能です。SNSトピック設定でメール通知が自動送信され、承認されなければ7日後に自動失敗するタイムアウト機能も備えています。
CAWS Step Functionsで承認ワークフローを構築してAmazon SESでメール通知を送り、承認または拒否のAPIコールを待機するタスクを定義する
Step Functionsによる承認ワークフローはカスタマイズ性が高いですが、ステートマシン定義・SES設定・Lambda統合など実装コストが高く、最小コストという要件に対してCodePipelineの標準機能で十分なところを過剰に複雑化させます。
DテストステージにCodeBuildアクションを追加してSNS通知を送り、承認確認ファイルがS3に書き込まれるまでポーリングを続けるスクリプトを実装する
CodeBuildのポーリング実装はビルド実行時間が継続的に課金対象となり、承認状態の永続化・タイムアウト管理・エラーハンドリングの実装も複雑になるため、最小コストの要件を満たせません。
解説
CodePipelineのManual Approvalアクションは、パイプラインの特定ステージで人間の承認を必須とするための組み込み機能です。追加のコーディングや外部サービスなしに設定できます。
主な機能:
・SNSトピックを指定すると承認者に自動でメール通知が届く
・承認者はAWSコンソールまたはCLI/APIで承認または拒否を実行できる
・未対応のまま7日間が経過するとパイプラインは自動的に失敗する
・承認時にコメントや追加URLを添付することも可能
最小の実装コストで承認ゲートを実現できるため、この要件に最も適しています。
選択肢AのLambda関数でのWebhook実装は技術的には可能ですが、コールバックURL管理・認証・エラーハンドリングなど独自実装が必要になり、コストと複雑さが増します。
選択肢CのStep Functionsによる承認ワークフローは高度なカスタマイズが可能ですが、ステートマシン定義・SES設定・API統合など実装コストが高く、標準機能で十分な要件に対して過剰です。
選択肢DのCodeBuildでのポーリング実装はビルド実行時間が課金対象となり続け、承認状態の管理やタイムアウト処理の実装も複雑になります。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →