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

ある企業はモノリポ(monorepo:複数サービスのコードを1つのリポジトリで管理する構成)を採用しており、AWS CodeCommitリポジトリに services/frontend/・services/backend/・services/shared/ のディレクトリが含まれています。フロントエンドサービス専用のAWS CodePipeline V2パイプラインを、services/frontend/ または services/shared/ 配下のファイルが変更された場合のみ自動起動させたいと考えています。services/backend/ のみの変更ではパイプラインを起動させないようにする最も効率的な方法はどれですか?

A
EventBridgeルールのevent patternにInput Transformerを設定し、変更ファイルパスを評価するLambda関数を経由させてから必要な場合のみCodePipeline.StartPipelineExecutionを呼び出す
EventBridgeルールとLambdaを経由することで同じ機能は実現できますが、V2のネイティブ機能を使わずに不要なLambdaを追加するため、複雑度とコストが増加します。
B
CodePipeline V2タイプのトリガー設定でファイルパスフィルターを使用し、services/frontend/** と services/shared/** を包含パターン(includeFilePaths)として指定する
✓ 正解
CodePipeline V2はファイルパスフィルタリング機能をネイティブでサポートしており、includeFilePaths設定で対象パスを指定するだけで目的を達成できます。最もシンプルで効率的です。
C
CodeCommitのトリガー機能でSNSトピックへ通知し、SQSキューを介してLambda関数がファイルパスを評価してパイプラインを条件付き起動させる
CodeCommitトリガーとSNS/SQS/Lambdaを組み合わせるアーキテクチャは過剰に複雑です。V2のネイティブ機能で対応可能な場合、このような複雑な構成は避けるべきです。
D
フロントエンド専用のCodeCommitブランチを作成し、パイプラインのソースをそのブランチに向けることでバックエンド変更の影響を受けないようにする
フロントエンド専用ブランチを作るとモノリポの利点(一元管理)が失われ、共有コードの変更時に同期が必要になるため現実的ではありません。

解説

CodePipeline V2タイプのトリガー設定でファイルパスフィルターを使用し、services/frontend/** と services/shared/** を包含パターン(includeFilePaths)として指定する。 AWS CodePipeline V2タイプはトリガー設定でglobパターンによるファイルパスフィルタリング(includeFilePaths / excludeFilePaths)をネイティブにサポートしています。services/frontend/** と services/shared/** を包含パターンとして設定するだけで、それ以外のパス変更ではパイプラインが自動起動しなくなります。追加のLambdaやSNS/SQSは不要です。 選択肢A(EventBridge ルールとLambda)はLambda経由でも同じ結果は得られますが、Lambda関数の実装・デプロイ・管理コストが発生し、V2のネイティブ機能より大幅に複雑です。 選択肢C(CodeCommit トリガー、SNS、SQS、Lambda)はSNS・SQS・Lambdaを組み合わせる構成は過剰であり、V2のネイティブ機能が存在する現在は最適解ではありません。 選択肢D(フロントエンド専用のCodeCommit ブランチ)は専用ブランチを作るとモノリポの利点(一元的な履歴管理・横断的変更)が失われ、shared/の変更をフロントエンドブランチへ同期させる仕組みが別途必要になるため現実的ではありません。

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

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

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