AWS認定資格 WEB問題集&徹底解説
DevOpsエンジニア-プロフェッショナル
問題文と選択肢
先日、検証環境でこのパイプラインを実行したところ、CodeBuildのビルドフェーズでS3からのソース取得がタイムアウトし、さらにCodeArtifactからの依存パッケージのダウンロードが権限エラーで失敗し、パイプラインが失敗しました。
セキュリティ要件を維持したままこれらのエラーを解消するために、DevOpsエンジニアが実行すべきアクションの組み合わせはどれですか。(2つ選択)
- CodeBuildプロジェクトのVPC設定でサブネットをパブリックサブネットに変更し、インターネットゲートウェイ経由でS3およびCodeArtifactへ到達できるようにする
- 対象VPC内にAmazon S3向けのゲートウェイ型VPCエンドポイントを作成し、CodeBuildが使用するプライベートサブネットのルートテーブルにエンドポイント宛のルートを追加する
- CodeArtifactのドメインポリシーを変更して認証なしの匿名アクセスを許可し、CodeBuildからのトークン取得処理そのものを省略する
- CodeBuildプロジェクトのIAMサービスロールに、codeartifact:GetAuthorizationToken、sts:GetServiceBearerToken、およびcodeartifact:ReadFromRepositoryを許可するポリシーを追加する
- CodeBuildのVPC設定を解除し、事前にダウンロードした依存パッケージ一式をアーカイブしたファイルをS3バケットに保管したうえで、それをCodePipelineの入力アーティファクトとしてビルドに渡す
A. CodeBuildプロジェクトのVPC設定でサブネットをパブリックサブネットに変更し、インターネットゲートウェイ経由でS3およびCodeArtifactへ到達できるようにする
パブリックサブネットに移してインターネットゲートウェイ経由で到達させる案は、「インターネットを経由してはならない」という規定に真っ向から反します。
さらに技術的にも成立しません。VPC 内で実行される CodeBuild のビルドコンテナにはパブリック IP が割り当てられないため、パブリックサブネットに置いてもインターネットゲートウェイ経由の通信はできず、結局 NAT ゲートウェイが必要になります。
要件違反と技術的な誤りが重なった選択肢です。
B. 対象VPC内にAmazon S3向けのゲートウェイ型VPCエンドポイントを作成し、CodeBuildが使用するプライベートサブネットのルートテーブルにエンドポイント宛のルートを追加する
正解。Amazon S3 への通信はゲートウェイ型 VPC エンドポイントを作成し、サブネットに関連付いたルートテーブルへエンドポイント宛のルート(プレフィックスリスト)を追加することで、インターネットを経由せず AWS ネットワーク内で完結します。追加のインスタンスも料金も不要です。
これにより buildspec.yml やソースアーティファクトの取得タイムアウトが解消されます。
あわせて、CodeArtifact のパッケージアセットの実体も S3 から取得されるため、プライベート環境で CodeArtifact を使う場合は S3 のゲートウェイエンドポイントが必須である点も押さえておきましょう。
C. CodeArtifactのドメインポリシーを変更して認証なしの匿名アクセスを許可し、CodeBuildからのトークン取得処理そのものを省略する
CodeArtifact には認証なしの匿名アクセスを許可する設定そのものが存在しません。ドメインポリシーやリポジトリポリシーで許可できるのは AWS のプリンシパルであり、リポジトリの利用には常に認証トークンが必要です。
仮に似た緩和ができたとしても、認証を捨てる案は「厳格な情報セキュリティ基準」に反するため、DevOps の解答としては真っ先に消える選択肢です。
「エラーが出たら認証を外す」という方向の選択肢は、試験では原則として誤答です。
D. CodeBuildプロジェクトのIAMサービスロールに、codeartifact:GetAuthorizationToken、sts:GetServiceBearerToken、およびcodeartifact:ReadFromRepositoryを許可するポリシーを追加する
正解。CodeArtifact からパッケージを取得するには、codeartifact:GetAuthorizationToken で認証トークンを取得し、sts:GetServiceBearerToken でそのトークンの発行を許可し、codeartifact:ReadFromRepository でリポジトリを読み取るという 3 つの権限が必要です。
いずれかが欠けるとまさに「権限エラー」で失敗するため、CodeBuild プロジェクトの IAM サービスロールにこれらを付与するのが直接の解決策です。
ネットワーク到達性(選択肢 B)とは独立した原因であり、両方を直して初めてパイプラインが通ります。
E. CodeBuildのVPC設定を解除し、事前にダウンロードした依存パッケージ一式をアーカイブしたファイルをS3バケットに保管したうえで、それをCodePipelineの入力アーティファクトとしてビルドに渡す
VPC 設定を解除すると、ビルドは VPC 外のマネージドなネットワークで実行されることになり、「プライベートサブネットで実行する」というセキュリティ構成そのものを放棄することになります。
さらに、依存パッケージを事前にダウンロードしてアーカイブを配る運用は、CodeArtifact でバージョンを一元管理する目的を捨てて手作業を増やすもので、運用オーバーヘッドが大きく増えます。
エラーの原因(経路と権限)を直さずに構成を後退させる案であり、適切ではありません。
タイムアウトは経路、権限エラーは IAM。S3 はゲートウェイ型エンドポイント、CodeArtifact はトークン取得権限。
正解への思考ルート
問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。| 要件 | 判断ポイント |
|---|---|
| インターネットから完全に遮断された構成を維持する | パブリックサブネット化や VPC 設定の解除は要件そのものを崩す。CodeBuild の VPC 実行ではパブリック IP も付かない →選択肢(A・E)を消す |
| S3 からのソース取得がタイムアウトした | タイムアウトは経路(到達性)の問題。S3 だけはゲートウェイ型エンドポイントを作り、ルートテーブルに反映する →選択肢(B)が正解 |
| CodeArtifact のダウンロードが権限エラーで失敗した | 到達はしているので認可(IAM)の問題。トークン取得と読み取りの権限をサービスロールへ付与する →選択肢(D)が正解 |
| 厳格な情報セキュリティ基準に従う | 匿名アクセスの許可はそもそも CodeArtifact に存在せず、あっても基準違反 →選択肢(C)を消す |
| CodeArtifact による依存パッケージの一元管理を続ける | 事前ダウンロードしたアーカイブの受け渡しはバージョン管理を人手に戻す後退案 →選択肢(E)を消す |
ひっかけポイント
- 「タイムアウト」と「権限エラー」は原因の層が違う。エンドポイントだけ、あるいは IAM だけを直しても、もう一方の失敗が残る。2 つ選ばせる設問の意図はこの切り分けにある
- VPC エンドポイントは、S3 と DynamoDB だけがゲートウェイ型で、ルートテーブルへのルート追加が必要(追加料金なし)。ほかはインターフェイス型(ENI + 時間課金)。選択肢 B が「ルートテーブルに追加」まで書いている点が正しさの目印
- 「パブリックサブネットに変更すれば外に出られる」は誤り。VPC 内で動く CodeBuild のビルドにはパブリック IP が付かないため、インターネットへ出るには NAT ゲートウェイが要る(そして本問ではそれ自体が要件違反)
- 選択肢 D の sts:GetServiceBearerToken は見落としやすい。CodeArtifact の認証トークン発行は STS のベアラートークンを伴うため、codeartifact 系の権限だけでは通らない
出題バリエーション
同じ知識が本番では条件を変えて出題されます。| 問題文がこう変わったら | 正解はこう変わる |
|---|---|
| 「CodeArtifact への通信そのものがタイムアウトする」 | codeartifact.api / codeartifact.repositories のインターフェイス型 VPC エンドポイント(+S3 ゲートウェイ)の作成が正解軸に。 |
| 「ビルドが Secrets Manager から DB 認証情報を取得できない」 | secretsmanager のインターフェイス型エンドポイントと、サービスロールへの GetSecretValue 権限が正解軸に。 |
| 「ビルドログが CloudWatch Logs に出力されない」 | logs のインターフェイス型エンドポイントとサービスロールのログ書き込み権限が正解軸に。 |
| 「社内ライブラリだけでなく PyPI の公開パッケージも同じリポジトリから取りたい」 | CodeArtifact の外部接続(アップストリームリポジトリ)の設定が正解軸に。 |
| 「特定の VPC エンドポイント経由からのみ CodeArtifact の利用を許可したい」 | リポジトリポリシーや IAM ポリシーの aws:SourceVpce 条件による制限が正解軸に。 |
リファレンス
この問題を解くために必要な知識を扱う公式ドキュメントです。| 知識項目 | 公式ドキュメント |
|---|---|
| プライベート環境から CodeArtifact を使う際に必要な VPC エンドポイント | Amazon VPC エンドポイントの使用 |
| CodeArtifact が利用できる AWS リージョン(エンドポイント一覧) | AWS CodeArtifact endpoints and quotas |
先日、検証環境でこのパイプラインを実行したところ、CodeBuildのビルドフェーズでS3からのソース取得がタイムアウトし、さらにCodeArtifactからの依存パッケージのダウンロードが権限エラーで失敗し、パイプラインが失敗しました。
セキュリティ要件を維持したままこれらのエラーを解消するために、DevOpsエンジニアが実行すべきアクションの組み合わせはどれですか。(2つ選択)
- CodeBuildプロジェクトのVPC設定でサブネットをパブリックサブネットに変更し、インターネットゲートウェイ経由でS3およびCodeArtifactへ到達できるようにする
- 対象VPC内にAmazon S3向けのゲートウェイ型VPCエンドポイントを作成し、CodeBuildが使用するプライベートサブネットのルートテーブルにエンドポイント宛のルートを追加する
- CodeArtifactのドメインポリシーを変更して認証なしの匿名アクセスを許可し、CodeBuildからのトークン取得処理そのものを省略する
- CodeBuildプロジェクトのIAMサービスロールに、codeartifact:GetAuthorizationToken、sts:GetServiceBearerToken、およびcodeartifact:ReadFromRepositoryを許可するポリシーを追加する
- CodeBuildのVPC設定を解除し、事前にダウンロードした依存パッケージ一式をアーカイブしたファイルをS3バケットに保管したうえで、それをCodePipelineの入力アーティファクトとしてビルドに渡す
次の問題
会員機能
お役立ち情報
- プレミアム会員のご紹介
- 「徹底解説」のご紹介
- 「模擬試験」のご紹介
- 収録問題と試験ガイドの対応
- 会員機能のご紹介
- おすすめの勉強方法
- 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