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

金融サービス会社が既存のJenkins CI基盤をAWSに段階的に移行しています。コンプライアンス上の制約からビルド処理は既存のJenkinsサーバー(EC2上)に留める必要がありますが、デプロイオーケストレーション(複数のデプロイステップを順序立てて管理・実行すること)はCodePipelineに移行することになりました。CodePipelineからJenkinsのビルドジョブをトリガーし、ジョブの成否をパイプライン実行状態に正しく反映させる最も適切な実装方法はどれですか?

A
JenkinsサーバーにAWS CodePipeline Jenkinsプラグインをインストールし、CodePipelineでJenkinsプロバイダーを使用したカスタムビルドアクションを定義する。JenkinsがCodePipelineのジョブキューをポーリングしてジョブを実行し、結果をCodePipelineに報告する
✓ 正解
AWS CodePipeline Jenkinsプラグインを使用するとJenkinsをCodePipelineの公式アクションプロバイダーとして統合できます。JenkinsがCodePipelineのキューをポーリングして取得・実行し、成否をCodePipeline APIで直接報告する最も適切で推奨される実装方法です。
B
CodePipelineにLambdaアクションを追加し、Lambda関数からJenkins REST APIを呼び出してジョブをキックし、Step FunctionsのWaitForTaskTokenパターンでジョブ完了を待機してCodePipelineに結果を返す
Lambda + Step Functions WaitForTaskTokenパターンは実装が複雑で、CodePipelineとの状態統合が不完全になります。公式統合機能がない分、カスタム実装の負担が大きく非効率です。
C
EventBridgeルールでCodePipelineのActionExecution状態変化イベントを検知し、API Destinationsを使用してJenkinsのwebhookエンドポイントに通知してジョブをトリガーする
EventBridge APIDestinationsではCodePipelineの状態管理とJenkinsの実行状態が分離されるため、双方向の状態同期が困難になり、パイプライン状態の管理が不完全になります。
D
CodeBuildプロジェクトのbuildspec.ymlでJenkins CLIをダウンロードしてJenkinsジョブをリモート実行し、終了コードに基づいてCodeBuildの成否を判定することでCodePipelineに状態を伝播する
CodeBuildを不必要な仲介層として挟むアーキテクチャ。Jenkinsプラグイン公式統合機能を活用せず、管理複雑性が増加するため非推奨です。

解説

AWS CodePipeline Jenkinsプラグインを使うとJenkinsをCodePipelineのアクションプロバイダーとして公式統合できます。JenkinsがCodePipelineのジョブキューをポーリングして取得・実行し、成否とアーティファクトをCodePipelineのAPIで直接報告します。 選択肢BのLambda+Step Functionsで実装が複雑になり、CodePipelineとの統合も不完全です。 選択肢CのEventBridgeルールでCodePipelineの状態管理と分離されており、双方向の状態同期が困難で不完全な実装になります。 選択肢DのCodeBuildを不必要な仲介として挟む非推奨パターンであり、公式統合機能を活用していません。

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

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

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