AWS認定資格 WEB問題集&徹底解説
DevOpsエンジニア-プロフェッショナル
問題文と選択肢
CodeBuildによる検証を効率的に自動化するには、どのように実装すればよいですか。
- プルリクエストの作成・更新に反応するAmazon EventBridgeルールを作成し、ターゲットをAWS Lambda関数にする。この関数がCodeBuildのビルドを起動し、完了を待ってからプルリクエストにビルド結果のコメントを追加する。
- プルリクエストの作成・更新に反応するAmazon EventBridgeルールを作成し、ターゲットをAWS CodeBuildにする。さらに、CodeBuildのビルド成功・失敗イベントに反応する2つ目のEventBridgeルールを作成し、ターゲットをAWS Lambda関数にして、その関数がプルリクエストにビルド結果のコメントを追加する。
- CodeCommitのリポジトリトリガーでプルリクエストの作成時にAmazon SNSへ通知を送信するよう設定し、通知を受けた担当者が手動でCodeBuildのビルドを開始したうえで、ビルド結果を手動でプルリクエストにコメントする。
- 5分間隔のスケジュールルールでAWS Lambda関数を定期実行し、プルリクエストの作成・更新有無をチェックしてCodeBuildのビルドを起動する。この関数はビルドの完了を待ってからプルリクエストにビルド結果のコメントを追加する。
A. プルリクエストの作成・更新に反応するAmazon EventBridgeルールを作成し、ターゲットをAWS Lambda関数にする。この関数がCodeBuildのビルドを起動し、完了を待ってからプルリクエストにビルド結果のコメントを追加する。
動作はしますが、効率の面で劣ります。この構成では Lambda 関数がスキャンの完了までポーリングしながら待ち続けることになり、待っている時間もそのまま課金されます。
さらに Lambda には最大 15 分の実行時間制限があるため、スキャンが長引くと結果を投稿する前に関数がタイムアウトします。
EventBridge は CodeBuild プロジェクトを直接ターゲットにできるので、起動役として Lambda を挟む必然性もありません。
B. プルリクエストの作成・更新に反応するAmazon EventBridgeルールを作成し、ターゲットをAWS CodeBuildにする。さらに、CodeBuildのビルド成功・失敗イベントに反応する2つ目のEventBridgeルールを作成し、ターゲットをAWS Lambda関数にして、その関数がプルリクエストにビルド結果のコメントを追加する。
正解です。CodeCommit はプルリクエストの作成・更新をPR 状態変更イベントとして EventBridge に送出し、EventBridge は CodeBuild プロジェクトを直接ターゲットに指定できます。起動のために Lambda を挟む必要がありません。
ビルドの成功・失敗も CodeBuild がビルド状態変更イベントとして送出するため、2 つ目のルールでそれを拾い、Lambda がプルリクエストへコメントを投稿します。
各コンポーネントが短時間で終わって待機しないため、実行時間の上限にも課金にも無理がなく、疎結合で拡張しやすい構成です。
C. CodeCommitのリポジトリトリガーでプルリクエストの作成時にAmazon SNSへ通知を送信するよう設定し、通知を受けた担当者が手動でCodeBuildのビルドを開始したうえで、ビルド結果を手動でプルリクエストにコメントする。
要件は「自動実行」と「自動反映」ですが、この案は担当者の手動操作が 2 回入るため要件そのものを満たしません。
仕組みの面でも成立しません。CodeCommit のリポジトリトリガーはブランチやタグ(参照)の作成・更新・削除といったプッシュ系イベントが対象で、プルリクエストの作成・更新を検知することはできません。PR のイベントを扱えるのは EventBridge 経由だけです。
D. 5分間隔のスケジュールルールでAWS Lambda関数を定期実行し、プルリクエストの作成・更新有無をチェックしてCodeBuildのビルドを起動する。この関数はビルドの完了を待ってからプルリクエストにビルド結果のコメントを追加する。
イベント駆動できる場面でのポーリングは、DevOps の設計として原則的に誤りです。5 分間隔では最大 5 分の検知遅れが生じ、プルリクエストが 1 件も無い時間帯にも関数が動き続けて無駄なコストがかかります。
加えて選択肢 A と同様に Lambda がビルドの完了を待つため、実行時間の上限と待機課金の問題も抱えます。
構成図
CodeCommit プルリクエスト(作成・更新)
│ PR 状態変更イベント
▼
EventBridge ルール1 ──ビルドを起動──▶ AWS CodeBuild(静的スキャン)
│ ビルド状態変更イベント
▼
EventBridge ルール2 ──▶ AWS Lambda
│ PR へコメント投稿
▼
CodeCommit プルリクエスト
Lambda を「完了待ち」に使ったら負け。起動も結果通知も EventBridge で連鎖させる。
正解への思考ルート
問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。| 要件 | 判断ポイント |
|---|---|
| プルリクエストの作成・更新のたびに自動でスキャンする | PR の作成・更新を検知できるのは EventBridge の PR 状態変更イベントのみ。リポジトリトリガーはプッシュ系専用で、定期ポーリングは検知が遅れる →選択肢(C・D)を消す |
| CodeBuild による検証を効率的に自動化する | EventBridge は CodeBuild プロジェクトを直接ターゲットにできる。起動役の Lambda は余分な部品 →選択肢(A)を消す |
| 合否をプルリクエストのコメントへ自動反映する | CodeBuild のビルド状態変更イベントを 2 つ目のルールで拾い、Lambda がコメント投稿 API を呼ぶ →選択肢(B)が正解 |
| Lambda にビルドの完了を待たせない | 待機中も課金され、最大 15 分の実行時間制限に当たる。完了待ちを書いている構成は効率の観点で落とす →選択肢(A・D)を消す |
| 人手を介さずレビュー担当者にバッジを見せる | 通知を受けた担当者が手動でビルドとコメントを行う運用は自動化の要件そのものに反する →選択肢(C)を消す |
ひっかけポイント
- 選択肢 A は実際に動く構成であり、明らかな誤りではない。本問は「動くか」ではなく「効率的か」で切る問題だと読み取る必要がある
- 「Lambda がビルドの完了を待ってからコメントする」は A と D の両方に仕込まれた同じ罠。待機時間も課金対象で、15 分の上限があるという一点で両方まとめて落とせる
- 選択肢 C の CodeCommit リポジトリトリガーはプッシュ(参照の作成・更新・削除)が対象で、プルリクエストのイベントは扱えない。手動運用である以前に仕組みとして成立しない
- EventBridge のターゲットには CodeBuild プロジェクトを直接指定できる。「ビルドを起動するための Lambda」が書かれている選択肢は、まずこの点を疑う
出題バリエーション
同じ知識が本番では条件を変えて出題されます。| 問題文がこう変わったら | 正解はこう変わる |
|---|---|
| 「スキャンが失敗したらマージ自体を禁止したい」に変わったら | 承認ルールテンプレートと、Lambda による PR 承認状態の更新を組み合わせる構成が正解軸に。 |
| 「ビルドの成功時だけコメントさせたい」に変わったら | 2 つ目のルールのイベントパターンで detail の build-status を SUCCEEDED に絞るのが答えに。 |
| 「リポジトリが GitHub に変わった」なら | CodeConnections 経由の接続や GitHub の Webhook でのビルド起動が論点に。 |
| 「検証結果をチャットにも通知したい」に変わったら | Amazon SNS と AWS Chatbot(Amazon Q Developer in chat applications)を挟む構成に。 |
| 「多数のリポジトリで同じ検証を回したい」に変わったら | 1 つのルールで複数リポジトリを対象にし、ビルド時にイベントの詳細から対象を切り替える設計が論点に。 |
リファレンス
この問題を解くために必要な知識を扱う公式ドキュメントです。| 知識項目 | 公式ドキュメント |
|---|---|
| EventBridge ルールのターゲットとして CodeBuild プロジェクトを直接指定できること | Amazon EventBridge のイベントバスターゲット |
CodeBuildによる検証を効率的に自動化するには、どのように実装すればよいですか。
- プルリクエストの作成・更新に反応するAmazon EventBridgeルールを作成し、ターゲットをAWS Lambda関数にする。この関数がCodeBuildのビルドを起動し、完了を待ってからプルリクエストにビルド結果のコメントを追加する。
- プルリクエストの作成・更新に反応するAmazon EventBridgeルールを作成し、ターゲットをAWS CodeBuildにする。さらに、CodeBuildのビルド成功・失敗イベントに反応する2つ目のEventBridgeルールを作成し、ターゲットをAWS Lambda関数にして、その関数がプルリクエストにビルド結果のコメントを追加する。
- CodeCommitのリポジトリトリガーでプルリクエストの作成時にAmazon SNSへ通知を送信するよう設定し、通知を受けた担当者が手動でCodeBuildのビルドを開始したうえで、ビルド結果を手動でプルリクエストにコメントする。
- 5分間隔のスケジュールルールでAWS Lambda関数を定期実行し、プルリクエストの作成・更新有無をチェックしてCodeBuildのビルドを起動する。この関数はビルドの完了を待ってからプルリクエストにビルド結果のコメントを追加する。
次の問題前の問題
会員機能
お役立ち情報
- プレミアム会員のご紹介
- 「徹底解説」のご紹介
- 「模擬試験」のご紹介
- 収録問題と試験ガイドの対応
- 会員機能のご紹介
- おすすめの勉強方法
- AWSサービスの解説
- AWS認定資格の種類・対象者・受験料・合格ライン
- スマホのホーム画面に登録する方法
姉妹サイト
- CLF:AWS 認定クラウドプラクティショナー
- SAA:AWS 認定ソリューションアーキテクト-アソシエイト
- AIF:AWS 認定AIプラクティショナー
- SOA:AWS 認定CloudOpsエンジニア-アソシエイト
- DVA:AWS 認定デベロッパー-アソシエイト
- DEA:AWS 認定データエンジニア-アソシエイト
- MLA:AWS 認定機械学習エンジニア-アソシエイト
- SAP:AWS 認定ソリューションアーキテクト-プロフェッショナル
- DOP:AWS 認定DevOpsエンジニア-プロフェッショナル
- AIP:AWS 認定生成AIデベロッパー-プロフェッショナル
- SCS:AWS 認定セキュリティ-専門知識
- AZ-900:Microsoft Azure Fundamentals
- AI-900:Microsoft Azure AI Fundamentals