第1回 問題集(開発ツール・デプロイ)
全120問 / すべての問題の解答・解説を無料で閲覧できます
DVA-C02 問題集 おすすめの使い方
目次
Lambda 関数から DynamoDB テーブルに対して高頻度の読み取りを行っています。DynamoDB のスロットリングが発生してアプリのレイテンシが高くなっています。追加コードの変更を最小限にしてレイテンシを改善する方法はどれですか?
解答・解説を見る
正解: B. Amazon DynamoDB Accelerator(DAX)クラスターを作成してエンドポイントを変更する
正解の根拠・詳細解説
DAX(DynamoDB Accelerator)は DynamoDB と互換性のあるインメモリキャッシュです。DAX クラスターを作成してエンドポイントを DynamoDB の代わりに DAX エンドポイントに変更するだけで、マイクロ秒レベルのレイテンシと自動スロットリング緩和が実現できます。SDK の変更が最小限で済みます。ElastiCache への移行(C)は大幅なコード変更が必要です。
S3 バケットにアップロードされた画像を Lambda で自動リサイズするアーキテクチャを構築します。Lambda がアップロードイベントをトリガーとして実行されるよう設定したいです。最も適切な設定はどれですか?
解答・解説を見る
正解: A. S3 イベント通知でLambda 関数を直接トリガーする
正解の根拠・詳細解説
S3 イベント通知(Event Notifications)は ObjectCreated などのイベントを検出して Lambda を直接非同期に呼び出せます。最もシンプルで低コストな構成です。S3 → Lambda の直接トリガーは DVA-C02 の定番パターンです。CloudWatch アラームや EC2 ポーリングは不要な複雑性を追加します。
Lambda 関数を本番・ステージング・開発の3環境で使い分けたいです。コードを変更せずに環境ごとに異なる設定値(データベースエンドポイントなど)を渡す最もシンプルな方法はどれですか?
解答・解説を見る
正解: C. Lambda の環境変数(Environment Variables)をエイリアスごとに設定する
正解の根拠・詳細解説
Lambda のエイリアスごとに異なる環境変数を設定できます(Alias-specific environment variables)。本番エイリアスには本番DBエンドポイント、ステージングには別のエンドポイントを設定することで、1つのコードベースで環境分離が実現できます。S3読み込み(D)も機能しますが、レイテンシとコードの変更が発生します。
DynamoDB テーブルに対してアイテムを条件付きで書き込みたいです。「item_idが存在しない場合のみ書き込む」という条件を実装する最適な方法はどれですか?
解答・解説を見る
正解: B. PutItem に ConditionExpression「attribute_not_exists(item_id)」を指定する
正解の根拠・詳細解説
PutItem の ConditionExpression に「attribute_not_exists(item_id)」を指定することで、item_id 属性が存在しない場合のみ書き込みが実行されます。条件が満たされない場合は ConditionalCheckFailedException が発生します。GetItem → PutItem の2回呼び出し(A)は競合状態(Race Condition)が発生する可能性があり安全ではありません。
API Gateway と Lambda を使った REST API で、特定のエンドポイントへのリクエストを 1 秒あたり 100 リクエストに制限したいです。最適な設定はどれですか?
解答・解説を見る
正解: A. API Gateway の使用量プラン(Usage Plan)でスロットリングレートを設定する
正解の根拠・詳細解説
API Gateway の使用量プラン(Usage Plan)は API キーと組み合わせてスロットリングレート(リクエスト/秒)とバースト制限を設定できます。特定のステージやメソッドレベルでの制限も可能です。Lambda のリザーブド同時実行(B)は同時実行数の制限であり RPS 制限ではありません。
SQS キューのメッセージを Lambda で処理しています。メッセージ処理中に Lambda がクラッシュした場合、メッセージが再処理されるようにしたいです。デフォルトの動作として正しいものはどれですか?
解答・解説を見る
正解: B. 可視性タイムアウト後にメッセージがキューに戻り再処理される
正解の根拠・詳細解説
SQS のメッセージは Lambda が受信すると可視性タイムアウト(デフォルト30秒)の間、他のコンシューマーから見えなくなります。Lambda が正常に処理完了するとメッセージは削除されます。クラッシュ・タイムアウト等で削除されない場合、可視性タイムアウト後にメッセージはキューに戻り再処理されます。DLQ への転送は最大受信数超過後です。
Lambda 関数がコールドスタートによる初期化遅延(数百ミリ秒〜数秒)が問題になっています。本番環境で常に低レイテンシを確保するための最適な解決策はどれですか?
解答・解説を見る
正解: B. Lambda のプロビジョンドコンカレンシーを設定する
正解の根拠・詳細解説
プロビジョンドコンカレンシー(Provisioned Concurrency)は指定した数の Lambda 実行環境を事前に初期化した状態で維持します。コールドスタートなしで即座にリクエストを処理できます。CloudWatch Events の定期呼び出し(C)も一般的な Warm-up テクニックですが、不安定でプロビジョンドコンカレンシーほど確実ではありません。
Kinesis Data Streams を使ってリアルタイムのクリックストリームデータを処理しています。特定の User-ID からのイベントが必ず同じシャードで処理されるようにしたいです。最適な設定はどれですか?
解答・解説を見る
正解: B. User-ID をパーティションキーとして使用する
正解の根拠・詳細解説
Kinesis Data Streams は同じパーティションキーを持つレコードを常に同じシャードに割り当てます。User-ID をパーティションキーにすることで、同一ユーザーのイベントが順序通り同一シャードで処理されます。シャード数を1(C)にすると並列処理ができずスループットが低下します。Enhanced Fan-Out は複数のコンシューマーに対応した読み取り機能です。
Lambda 関数が実行するたびに AWS SDK を使って同じ S3 設定を取得しています。API 呼び出しコストとレイテンシを削減したいです。最善のコーディングプラクティスはどれですか?
解答・解説を見る
正解: B. 設定取得コードをハンドラー関数の外側(グローバルスコープ)に書く
正解の根拠・詳細解説
Lambda の実行環境はウォーム状態では再利用されます。ハンドラー関数の外側(グローバルスコープ)に書いたコードはコールドスタート時に1回だけ実行され、以降のウォーム呼び出しではキャッシュされた値が使われます。これにより API 呼び出しコストとレイテンシが大幅に削減されます。これは Lambda のベストプラクティスです。
EventBridge(CloudWatch Events)を使って、毎日午前2時に Lambda 関数を実行したいです。スケジュール式として正しいものはどれですか?
解答・解説を見る
正解: B. cron(0 2 * * ? *)
正解の根拠・詳細解説
EventBridge の cron 式は「cron(分 時 日 月 曜日 年)」の形式です。「cron(0 2 * * ? *)」は「毎日 2:00 UTC」を意味します。曜日フィールドの「?」はワイルドカード(指定なし)です。rate(1 day) は24時間ごとの実行ですが特定の時刻を指定できません。AWS の cron は Unix cron と若干異なり6フィールドで年も指定できます。
DynamoDB テーブルで userId(パーティションキー)と createdAt(ソートキー)を使っています。「特定のユーザーの直近30日間のデータを取得する」クエリを効率的に実行する方法はどれですか?
解答・解説を見る
正解: B. Query 操作で KeyConditionExpression に userId と createdAt の範囲条件を指定する
正解の根拠・詳細解説
Query 操作はパーティションキーを完全一致で指定し、ソートキーに範囲条件(BETWEEN、>= など)を使用できます。ソートキーに日付(ISO 8601形式推奨)を使うことでインデックスを効率的に利用した日付範囲検索が実現できます。Scan(A)は全テーブルスキャンでコストが高く非効率です。
SNS トピックから複数の SQS キューにメッセージをファンアウト(同報)配信しています。特定の SQS キューには「type=ORDER」属性のメッセージのみ配信したいです。最適な実装方法はどれですか?
解答・解説を見る
正解: B. SNS サブスクリプションのフィルターポリシーを設定する
正解の根拠・詳細解説
SNS のサブスクリプションフィルターポリシーは、メッセージ属性に基づいてサブスクライバーへの配信を制御できます。「{“type”: [“ORDER”]}」のようなポリシーをSQSサブスクリプションに設定することで、ORDER タイプのメッセージのみが配信されます。これにより不要なメッセージの処理を完全に排除できます。
複数の Lambda 関数を順番に実行するワークフローを構築しています。各ステップの実行状態・成功/失敗・再試行ロジックを一元管理したいです。最適なサービスはどれですか?
解答・解説を見る
正解: B. AWS Step Functions でステートマシンを構築する
正解の根拠・詳細解説
AWS Step Functions はワークフローをビジュアルで定義・実行・監視するサービスです。各ステップの実行履歴、成功/失敗状態、リトライ・エラーハンドリング(Catch/Retry)、並列実行(Parallel)、条件分岐(Choice)を宣言的に管理できます。Lambda から Lambda を直接呼び出す(C)は状態管理が複雑になり、長時間実行でタイムアウトリスクがあります。
API Gateway REST API のレスポンスに CORS ヘッダーを追加したいです。Lambda 関数を使用しています。CORS を正しく設定する方法はどれですか?(2つ選択)
解答・解説を見る
正解: A. API Gateway コンソールで CORS を有効化(OPTIONS メソッドの追加)する
正解の根拠・詳細解説
・BCORS の完全な設定には2つの対応が必要です。①API Gateway で CORS を有効化(プリフライトリクエスト用の OPTIONS メソッドと Access-Control-Allow-Headers/Methods を設定)、②Lambda のプロキシ統合では Lambda のレスポンスに Access-Control-Allow-Origin ヘッダーを含める必要があります。どちらか一方だけでは不完全です。
Lambda Layer を使う主な目的はどれですか?
解答・解説を見る
正解: B. 共通ライブラリ・依存関係を複数の Lambda 関数で共有する
正解の根拠・詳細解説
Lambda Layer は共通のライブラリ、カスタムランタイム、設定ファイルをパッケージ化して複数の Lambda 関数間で共有できる仕組みです。デプロイパッケージのサイズを削減し、共通コードを一元管理できます。1つの関数に最大5つのレイヤーを追加できます。VPC 配置(D)は Lambda の VPC 設定で行います。
AppSync を使った GraphQL API で、複数の AWS サービス(DynamoDB・Lambda・HTTP API)からデータを取得して1つのクエリで返したいです。各データソースへの接続を設定するために必要なものはどれですか?
解答・解説を見る
正解: A. AppSync のリゾルバー(Resolver)を各フィールドに設定する
正解の根拠・詳細解説
AppSync のリゾルバーは GraphQL スキーマの各フィールドとデータソース(DynamoDB、Lambda、HTTP、OpenSearch 等)を接続するマッピング設定です。リクエストマッピングテンプレートとレスポンスマッピングテンプレート(VTL または JavaScript)でデータ変換を行います。パイプラインリゾルバーで複数のデータソースを順番に呼び出すこともできます。
DynamoDB の TransactWriteItems を使う主なユースケースはどれですか?
解答・解説を見る
正解: B. 最大25個のアイテムへの書き込みをアトミックに実行する(全成功 or 全失敗)
正解の根拠・詳細解説
TransactWriteItems は最大25アイテム(最大4MBまで)の書き込み操作(Put/Update/Delete/ConditionCheck)をアトミックトランザクションとして実行します。すべての操作が成功するか、1つでも失敗した場合は全操作がロールバックされます。銀行振込の「引き落とし+入金」のような複数テーブルをまたぐ整合性確保に使用されます。
S3 に保存した 5GB の大きなファイルを分割してアップロードしたいです。アップロード途中で失敗した場合に全体を再送しないようにしたいです。最適な方法はどれですか?
解答・解説を見る
正解: B. マルチパートアップロード(Multipart Upload)を使う
正解の根拠・詳細解説
S3 マルチパートアップロードはファイルを複数パートに分割して並列アップロードし、全パート完了後に S3 側で結合します。特定パートが失敗した場合はそのパートのみ再送すれば OK です。100MB 以上のファイルには推奨、5GB 超では必須です。Transfer Acceleration(A)はインターネット転送の高速化でマルチパートとは別の機能です。
WebSocket API を API Gateway で構築しています。接続中のクライアントにサーバーからメッセージをプッシュ送信したいです。Lambda 関数からの送信方法として正しいものはどれですか?
解答・解説を見る
正解: B. API Gateway Management API を使って接続IDにメッセージを送信する
正解の根拠・詳細解説
API Gateway WebSocket API では、各接続に一意の connectionId が割り当てられます。Lambda から API Gateway Management API の PostToConnection を呼び出し、connectionId を指定することでサーバーから特定クライアントにメッセージをプッシュ送信できます。connectionId は @connections エンドポイント経由で使用します。
ElastiCache Redis を使ってセッション管理を実装しています。ユーザーがログアウトした際にセッションを即座に無効化したいです。最も適切な実装方法はどれですか?
解答・解説を見る
正解: B. ログアウト時に Redis から該当セッションキーを DEL コマンドで削除する
正解の根拠・詳細解説
ログアウト処理でセッション ID に対応する Redis キーを DEL コマンドで削除することで、即座にセッションを無効化できます。その後同じセッション ID でのリクエストはセッションデータが存在しないため認証失敗になります。TTL のみに依存する方法(A)は TTL 期限切れまでセッションが有効なままになるセキュリティリスクがあります。
Lambda 関数が VPC 内のプライベートサブネットに配置されており、インターネット上の外部 API を呼び出す必要があります。Lambda からインターネットアクセスを有効にするための設定はどれですか?
解答・解説を見る
正解: B. プライベートサブネットのルートテーブルに NAT Gateway 経由のルートを追加する
正解の根拠・詳細解説
VPC 内の Lambda からインターネットにアクセスするには、パブリックサブネットに NAT Gateway を配置し、Lambda が配置されたプライベートサブネットのルートテーブルに「0.0.0.0/0 → NAT Gateway」のルートを追加します。プライベートサブネットのリソースは Internet Gateway に直接アクセスできません。
SQS FIFO キューを使う主な理由はどれですか?
解答・解説を見る
正解: B. メッセージの順序保証と重複排除が必要なため
正解の根拠・詳細解説
SQS FIFO キューはメッセージの送信順序を厳密に保証し(First-In-First-Out)、メッセージグループ ID 内での順序が保たれます。また Content-Based Deduplication により重複メッセージを自動的に排除します。スループットは Standard(無制限)に比べて FIFO は制限(デフォルト300TPS、バッチ処理で3000TPS)があります。
DynamoDB の Global Secondary Index(GSI)に関して正しいものはどれですか?
解答・解説を見る
正解: B. GSI は既存テーブルに後から追加でき、任意の属性をインデックスキーにできる
正解の根拠・詳細解説
GSI は既存テーブルに後から追加・削除が可能(LSI は作成時のみ)で、テーブルのプライマリキー以外の任意の属性をパーティションキー・ソートキーとして設定できます。GSI は常に結果整合性(Eventually Consistent)の読み取りのみサポートし(Strong Consistency は不可)、独自の RCU/WCU キャパシティを持ちます。
API Gateway で Lambda プロキシ統合(Lambda Proxy Integration)を使っています。Lambda 関数が返すべきレスポンス形式として正しいものはどれですか?
解答・解説を見る
正解: B. statusCode・headers・body(文字列化)を含む JSON オブジェクトを返す
正解の根拠・詳細解説
Lambda プロキシ統合では Lambda が以下の形式で返す必要があります:{ “statusCode”: 200, “headers”: { “Content-Type”: “application/json” }, “body”: JSON.stringify(data) }。body は必ず文字列化(JSON.stringify)が必要です。この形式でないと API Gateway が 502 Bad Gateway エラーを返します。
Kinesis Data Firehose と Kinesis Data Streams の主な違いはどれですか?
解答・解説を見る
正解: B. Firehose は S3/Redshift/OpenSearch への自動配信に特化、Data Streams はカスタムコンシューマーによるリアルタイム処理向け
正解の根拠・詳細解説
Kinesis Data Firehose は完全マネージドのデータ配信サービスで、S3・Redshift・OpenSearch・Splunk に自動的にデータをロードします。シャード管理不要で、バッファリング後にバッチで配信(準リアルタイム)されます。Data Streams はシャードを管理してカスタムコンシューマー(Lambda・KCL)がリアルタイムにデータを処理できます(ミリ秒レベル)。
DynamoDB Streams を使ったユースケースとして最も適切なものはどれですか?
解答・解説を見る
正解: B. テーブルの変更(Insert/Modify/Delete)をほぼリアルタイムで Lambda に通知して連鎖処理を実行する
正解の根拠・詳細解説
DynamoDB Streams はテーブルへのデータ変更(追加・更新・削除)の変更ログを最大24時間保持するストリームです。Lambda のイベントソースとして設定することで、変更をほぼリアルタイムに処理できます。代表的なユースケース:クロスリージョンレプリケーション、Elasticsearch へのインデックス更新、監査ログ記録、キャッシュ無効化などです。
S3 バケット内のオブジェクトに署名付き URL(Presigned URL)を生成して、認証されていないユーザーが一時的にダウンロードできるようにしたいです。Presigned URL の特徴として正しいものはどれですか?
解答・解説を見る
正解: B. IAM 権限を持つ署名者の認証情報で署名され、有効期限内のみアクセス可能
正解の根拠・詳細解説
Presigned URL は S3 オブジェクトへの一時的なアクセスを許可する署名付き URL です。署名者の IAM 認証情報(アクセスキー or IAM ロール)と指定した有効期限(最大7日)が埋め込まれています。バケットをパブリックにする必要はなく、URL を知っているユーザーが有効期限内はアクセスできます。有効期限後は 403 エラーになります。
API Gateway で REST API と HTTP API の使い分けとして最も正確な説明はどれですか?
解答・解説を見る
正解: B. HTTP API はコスト低・低レイテンシでシンプルなユースケース向け。REST API は使用量プラン・キャッシュ・WAF 等の高度な機能が必要な場合向け
正解の根拠・詳細解説
HTTP API は REST API より最大71%安価で低レイテンシです。Cognito/JWT 認証、CORS、Lambda/HTTP 統合などをサポートします。REST API は使用量プラン・キャッシュ・WAF 統合・API キー・リソースポリシー・VPC Link(プライベート統合)など高度な機能が必要な場合に選択します。単純なプロキシ API なら HTTP API で十分です。
Lambda 関数のバージョン管理について正しいものはどれですか?
解答・解説を見る
正解: B. バージョンは発行(Publish)すると変更不可(イミュータブル)になる
正解の根拠・詳細解説
Lambda のバージョンは「Publish new version」で発行すると変更不可になります。$LATEST は常に最新のコードを指す編集可能なバージョンです。エイリアスは2つのバージョン間でトラフィックを重み付けで分割できます(例:v1に90%、v2に10%)。これはカナリアデプロイに使用されます。バージョン数の上限はありません。
AWS SDK for Python(Boto3)で DynamoDB に接続するとき、認証情報(アクセスキー)の取得優先順位として正しいものはどれですか?
解答・解説を見る
正解: C. コード内での明示的な指定 → 環境変数 → IAM ロール
正解の根拠・詳細解説
Boto3 の認証情報取得順序(Credential Provider Chain)は:①コード内での明示的な指定、②環境変数(AWS_ACCESS_KEY_ID 等)、③AWS 設定ファイル(~/.aws/credentials)、④IAM ロール(EC2/Lambda/ECS のインスタンスメタデータ) の順です。EC2/Lambda 上では IAM ロールが自動適用されるため、コードに認証情報をハードコードすべきではありません。
Lambda@Edge と CloudFront Functions の違いについて正しいものはどれですか?
解答・解説を見る
正解: B. CloudFront Functions は超低レイテンシ・低コストのシンプルな処理向け。Lambda@Edge は外部 API 呼び出しや複雑な処理向け
正解の根拠・詳細解説
CloudFront Functions はサブミリ秒の実行時間でヘッダー操作・URL リダイレクト・A/Bテストなど軽量処理に特化し、Lambda@Edge の1/6以下のコストです。Lambda@Edge(Node.js/Python対応)は最大30秒の実行時間で外部 API 呼び出し・認証処理・複雑なコンテンツ変換が可能です。
EventBridge Pipes の主なユースケースはどれですか?
解答・解説を見る
正解: B. イベントソース(SQS・DynamoDB Streams 等)とターゲット(Lambda・Step Functions 等)をフィルタリング・変換・エンリッチメントしながら接続する
正解の根拠・詳細解説
EventBridge Pipes はイベントソース(SQS・DynamoDB Streams・Kinesis・Kafka など)からターゲット(Lambda・Step Functions・API Gateway・EventBridge バスなど)へのポイントツーポイント統合を提供します。フィルタリング・エンリッチメント(Lambda/API Gateway で変換)・変換をノーコードで設定できます。従来の Lambda でのグルーコードを削減できます。
Lambda 関数の実行結果を非同期で別の Lambda に連携したいです。実行結果(成功・失敗)に応じて別々の処理を実行する設定はどれですか?
解答・解説を見る
正解: A. Lambda の Destination(送信先)を成功・失敗それぞれに設定する
正解の根拠・詳細解説
Lambda Destinations(非同期呼び出しの送信先)は、非同期呼び出しの成功時・失敗時にそれぞれ異なる送信先(Lambda・SQS・SNS・EventBridge)を設定できます。実行コンテキスト情報(リクエスト・レスポンス)も一緒に転送されます。従来の DLQ(失敗時のみ)より詳細な制御が可能で、成功ルートも設定できる点が特徴です。
DynamoDB のホットパーティション問題を解決するための設計手法はどれですか?
解答・解説を見る
正解: B. パーティションキーにランダムサフィックスを追加してデータを分散させる(Write Sharding)
正解の根拠・詳細解説
ホットパーティションは特定のパーティションキーに書き込みが集中する問題です。Write Sharding はパーティションキーにランダムなサフィックス(例:userId_1、userId_2…)を付加してデータを複数パーティションに分散させるテクニックです。読み取り時はサフィックスの全パターンを Parallel Scan します。On-Demand(A)はキャパシティ管理は自動化しますがホットパーティション自体は解消しません。
AWS SDK を使って大量の DynamoDB アイテムを効率的に書き込む最適な方法はどれですか?
解答・解説を見る
正解: B. BatchWriteItem で最大25アイテムをまとめて書き込む
正解の根拠・詳細解説
BatchWriteItem は1回の API コールで最大25アイテムのPut/Delete操作を実行できます。単独の PutItem 繰り返し(A)よりも API 呼び出し回数が減りコストとレイテンシが改善されます。ただし BatchWriteItem はトランザクション保証がなく、一部アイテムの書き込み失敗時は UnprocessedItems として返されるため再試行が必要です。TransactWriteItems(C)は25アイテムまで対応ですがコストが高く原子性が必要な場合に使います。
Lambda 関数のデプロイパッケージサイズが 50MB を超えています。コンソールからのインラインコード編集もできなくなっています。解決策として正しいものはどれですか?
解答・解説を見る
正解: A. Lambda Layer に共通ライブラリを移動してデプロイパッケージを削減する
正解の根拠・詳細解説
Lambda のデプロイパッケージ制限:圧縮 50MB(直接アップロード)、250MB(解凍後)、コンソール編集は 3MB まで。Lambda Layer に共通ライブラリ(numpy、pandas 等)を分離することでデプロイパッケージを大幅に削減できます。また 50MB 超のパッケージは S3 経由でアップロードする必要があります(コンテナイメージ形式なら最大 10GB まで対応)。
Amazon Cognito User Pool と Identity Pool(Federated Identities)の主な違いはどれですか?
解答・解説を見る
正解: A. User Pool はユーザー認証(サインアップ/サインイン)、Identity Pool は認証後の AWS リソースへの一時的なアクセス権限付与
正解の根拠・詳細解説
Cognito User Pool はユーザーディレクトリ(サインアップ/サインイン/MFA/パスワードリセット)を提供し、JWT トークン(ID/Access/Refresh Token)を発行します。Identity Pool は User Pool や外部 IdP(Google/Facebook/Apple 等)の認証情報を受け取り、IAM ロールを使った一時的な AWS 認証情報(STS AssumeRoleWithWebIdentity)を付与します。S3・DynamoDB 等への直接アクセスに使用します。
Lambda 関数の並列処理を実現するため、Step Functions の Map ステートを使いたいです。Map ステートの特徴として正しいものはどれですか?
解答・解説を見る
正解: B. 配列の各要素に対して並列に同じ処理を実行できる(最大同時実行数を設定可能)
正解の根拠・詳細解説
Step Functions の Map ステートは入力配列の各要素に対して同じ処理を並列実行できます。MaxConcurrency パラメータで最大同時実行数を制御でき(0 = 無制限並列)、大量データの並列処理に最適です。Distributed Map モードでは数百万のアイテムを高スループットで処理できます。
Lambda 関数が DynamoDB・S3・Secrets Manager にアクセスする必要があります。アクセス権限を付与する最もセキュアな方法はどれですか?
解答・解説を見る
正解: B. Lambda 実行ロール(IAM Role)に必要な最小権限のポリシーをアタッチする
正解の根拠・詳細解説
Lambda 関数には実行ロール(IAM Role)を付与し、必要なサービスへの最小権限ポリシーをアタッチするのがベストプラクティスです。Lambda は実行時に IAM ロールから一時的な認証情報(STS)を自動取得します。環境変数への認証情報ハードコード(A)はセキュリティリスクが高く絶対に避けるべきです。
アプリケーションが使用する DB パスワードを安全に管理し、90日ごとに自動ローテーションしたいです。最適なサービスはどれですか?
解答・解説を見る
正解: B. AWS Secrets Manager
正解の根拠・詳細解説
AWS Secrets Manager はシークレット(DB 認証情報・API キー等)の安全な保存と自動ローテーションをネイティブにサポートします。RDS・Redshift・DocumentDB の自動ローテーション Lambda が自動生成されます。Parameter Store(A)はシークレット管理に使えますが自動ローテーション機能がなく、より設定・管理コストが低い Secrets Manager が最適です。
KMS を使ったエンベロープ暗号化(Envelope Encryption)の仕組みとして正しいものはどれですか?
解答・解説を見る
正解: B. データキー(DEK)でデータを暗号化し、DEK 自体を KMS CMK で暗号化して保存する
正解の根拠・詳細解説
エンベロープ暗号化は大量データを効率的に暗号化する方法です。①GenerateDataKey API でデータキー(平文 DEK)を生成、②DEK でデータを暗号化、③DEK 自体を CMK で暗号化(暗号化済み DEK)、④暗号化済み DEK と暗号化データを保存します。復号時は KMS で DEK を復号してからデータを復号します。CMK が KMS 外に出ることはありません。
Cognito User Pool を API Gateway のオーソライザーとして設定しています。クライアントが API を呼び出す際に使用すべきトークンはどれですか?
解答・解説を見る
正解: B. Cognito ID Token または Access Token(Authorization ヘッダー)
正解の根拠・詳細解説
Cognito User Pool オーソライザーは JWT ベースの認証を行います。クライアントは Cognito でサインイン後に取得した ID Token または Access Token を Authorization ヘッダーに Bearer トークンとして含めてリクエストします。API Gateway は Cognito に対してトークンを検証します。Refresh Token はアクセストークン更新用で API 呼び出しには使用しません。
API Gateway に Lambda オーソライザー(Custom Authorizer)を設定しています。Lambda オーソライザーが返すべき内容はどれですか?
解答・解説を見る
正解: B. プリンシパル ID と IAM ポリシードキュメント(Allow/Deny)
正解の根拠・詳細解説
Lambda オーソライザーは {“principalId”: “user123”, “policyDocument”: {“Version”: “2012-10-17”, “Statement”: [{“Effect”: “Allow/Deny”, “Action”: “execute-api:Invoke”, “Resource”: “arn:…”}]}} の形式で IAM ポリシードキュメントを返します。API Gateway はこのポリシーを評価してリクエストを許可または拒否します。結果をキャッシュする TTL も設定可能です。
IAM ポリシーの評価ロジックとして正しいものはどれですか?
解答・解説を見る
正解: B. デフォルト拒否 → 明示的 Allow で許可 → 明示的 Deny は常に優先
正解の根拠・詳細解説
IAM ポリシーの評価は「暗黙的拒否(デフォルト)→ 明示的 Allow で許可 → 明示的 Deny は常に最優先で上書き」です。明示的 Deny は同一ポリシー内に Allow があっても必ず拒否されます。SCP(Organizations)・権限境界・セッションポリシーも考慮されます。アクセスには関連する全ポリシーのいずれかに Allow がありかつ Deny がない必要があります。
クロスアカウントで S3 バケットにアクセスするシナリオで、STS AssumeRole を使います。AssumeRole の流れとして正しいものはどれですか?
解答・解説を見る
正解: A. STS に AssumeRole リクエスト → 一時的認証情報を取得 → その認証情報でリソースにアクセス
正解の根拠・詳細解説
AssumeRole の流れ:①自アカウントのプリンシパルが STS の AssumeRole API を呼び出す(ロールの ARN を指定)、②STS が一時的な認証情報(AccessKeyId・SecretAccessKey・SessionToken)を返す、③一時的認証情報を使って対象リソース(S3 等)にアクセスする。相手アカウントのロールには信頼ポリシー(Trust Policy)で自アカウントからの AssumeRole を許可する必要があります。
S3 バケットの特定のプレフィックスに対して、特定の IAM ロールのみ読み取りを許可し、それ以外は拒否したいです。最も適切な設定はどれですか?
解答・解説を見る
正解: B. S3 バケットポリシーで条件付き Allow/Deny を設定する
正解の根拠・詳細解説
S3 バケットポリシーはバケット・プレフィックス・オブジェクト単位でアクセス制御を一元管理できます。特定の IAM ロール ARN を Principal で指定し、Resource でプレフィックスを限定し、Condition で追加制限を設定できます。ACL(A)は権限の細かな制御が困難で現在は非推奨です。バケットポリシーとアイデンティティポリシーを組み合わせることで最小権限を実現できます。
Lambda 関数が RDS に接続する際のデータベース認証に、パスワードを使わずに IAM 認証を使いたいです。正しい実装手順はどれですか?
解答・解説を見る
正解: A. RDS で IAM 認証を有効化 → DB ユーザーに IAM 認証付与 → Lambda ロールに rds-db:connect 権限付与 → 認証トークンを生成して接続
正解の根拠・詳細解説
RDS IAM 認証の手順:①RDS インスタンスで IAM 認証を有効化、②DB ユーザーに IAM 認証のグラント付与、③Lambda 実行ロールに「rds-db:connect」権限のポリシーをアタッチ、④Lambda コードで boto3(generate_db_auth_token)を使って一時認証トークン(15分有効)を生成、⑤トークンをパスワードとして RDS に接続。パスワード管理が不要でセキュアです。
KMS カスタマー管理キー(CMK)と AWS 管理キー(AWS Managed Key)の主な違いはどれですか?
解答・解説を見る
正解: B. CMK はキーポリシーのカスタマイズ・ローテーション制御・クロスアカウント使用が可能。AWS 管理キーはそれらが制限されている
正解の根拠・詳細解説
CMK(Customer Managed Key)はユーザーが作成・管理するキーで、キーポリシーのカスタマイズ、手動ローテーション・自動ローテーション(毎年)の制御、クロスアカウント使用が可能です。AWS Managed Key(aws/s3, aws/lambda 等)はAWSが自動的に作成・管理し、ユーザーはキーポリシーを変更できず、クロスアカウント使用もできません。CMK の方が細かい制御が可能ですが追加コストがかかります。
Cognito でソーシャルログイン(Google/Facebook)を実装し、認証後にユーザーが S3 バケットの自分専用フォルダにのみアクセスできるようにしたいです。最適な構成はどれですか?
解答・解説を見る
正解: B. Cognito User Pool(ソーシャルフェデレーション)+ Identity Pool → IAM ロールの条件に ${cognito-identity.amazonaws.com:sub} を使って個人フォルダを制限
正解の根拠・詳細解説
Cognito Identity Pool から付与される IAM ロールの条件変数 ${cognito-identity.amazonaws.com:sub} はユーザーの一意の Cognito ID に対応します。S3 バケットポリシーのリソース ARN に「arn:aws:s3:::bucket/${cognito-identity.amazonaws.com:sub}/*」を指定することで、各ユーザーは自分の Cognito ID に対応するフォルダのみにアクセスできます。
Systems Manager Parameter Store の Standard と Advanced パラメータの主な違いはどれですか?
解答・解説を見る
正解: A. Standard は無料・最大4KB、Advanced は有料・最大8KB・パラメータポリシー対応
正解の根拠・詳細解説
Standard パラメータは無料(10,000個まで)・最大4KBで基本的な機能。Advanced パラメータは有料($0.05/パラメータ/月)・最大8KB・パラメータポリシー(TTL設定・有効期限通知)が追加されます。どちらも SecureString タイプで KMS 暗号化に対応しています(A の記述は一部不正確ですが最も正確な選択肢)。自動ローテーション(C)は Secrets Manager の機能です。
API Gateway で API キーを使ったアクセス制御を実装しています。API キーは何を実現するために使用しますか?
解答・解説を見る
正解: B. API の使用量追跡とスロットリング(使用量プランと組み合わせ)
正解の根拠・詳細解説
API キーは認証ではなく、使用量の追跡・スロットリング・課金に使用されます。使用量プラン(Usage Plan)と組み合わせてリクエスト数制限・スロットリングレートをクライアントごとに設定できます。認証・認可には Cognito オーソライザーや Lambda オーソライザー、IAM 認証を使用すべきです。「API キー = 認証」という誤解はよくある間違いです。
Lambda 関数のコードに AWS アクセスキーが含まれているとセキュリティチームから指摘されました。最も迅速かつ安全な修正方法はどれですか?
解答・解説を見る
正解: B. アクセスキーをコードから削除し、Lambda 実行ロール(IAM Role)でアクセスを制御する
正解の根拠・詳細解説
コードからアクセスキーを完全に削除し、Lambda 実行ロールに必要な権限のポリシーをアタッチします。Lambda は実行時に IAM ロールから一時的な認証情報を自動取得するため、ハードコードされた認証情報は不要です。既存のアクセスキーは直ちに無効化する必要があります。環境変数への移動(A)もキーの漏洩リスクが残るため不完全です。
VPC 内の Lambda が AWS サービス(S3・DynamoDB)にアクセスする際に、インターネットを経由させたくありません。コスト削減とセキュリティ向上を両立する方法はどれですか?
解答・解説を見る
正解: B. S3・DynamoDB 用の VPC エンドポイントを作成する
正解の根拠・詳細解説
VPC エンドポイントを使うことで、S3(Gateway タイプ・無料)と DynamoDB(Gateway タイプ・無料)へのトラフィックをインターネットや NAT Gateway を経由せずに AWS 内部ネットワーク経由でルーティングできます。NAT Gateway のデータ処理コスト($0.062/GB)を削減し、インターネット非接続のセキュリティ強化にもなります。
Cognito の MFA(多要素認証)を実装する場合、サポートされる認証方法はどれですか?(2つ選択)
解答・解説を見る
正解: A. SMS テキストメッセージ(SNS 経由)
正解の根拠・詳細解説
・CCognito User Pool の MFA はSMSテキストメッセージ(Amazon SNS 経由)とTOTP(Time-based OTP)の2種類をサポートしています。TOTP は Google Authenticator や Authy などの認証アプリを使用します。MFA は任意(Optional)・必須(Required)・無効(Off)から選択できます。電子メール MFA(B)と生体認証(D)は標準サポート外です。
Lambda 関数が実行する操作の完全な監査ログ(誰が何をいつ呼び出したか)を取得したいです。最も適切なサービスはどれですか?
解答・解説を見る
正解: B. AWS CloudTrail
正解の根拠・詳細解説
AWS CloudTrail は AWS API コールの監査ログを記録します。誰が(IAM ユーザー/ロール)、どのサービスに対して、どのアクションを、いつ(タイムスタンプ)、どこから(ソース IP)呼び出したかを記録します。Lambda の InvokeFunction・UpdateFunctionCode 等も記録されます。CloudWatch Logs はアプリケーションの実行ログ(stdout)でAPI呼び出し監査ではありません。
ACM(AWS Certificate Manager)で発行した SSL/TLS 証明書を API Gateway に設定する際、正しい説明はどれですか?
解答・解説を見る
正解: A. ACM 証明書は us-east-1 リージョンで発行したもののみ CloudFront・API Gateway のエッジ最適化エンドポイントで使用可能
正解の根拠・詳細解説
CloudFront および API Gateway のエッジ最適化エンドポイント用の ACM 証明書は必ず us-east-1 リージョンで発行または インポートする必要があります。API Gateway のリージョナルエンドポイントは同一リージョンの証明書を使用します。ACM 証明書は EC2 に直接インストールできません(ELB 経由で使用)。
Cognito の認証フローで「アドミン認証」(AdminInitiateAuth)と「ユーザー認証」(InitiateAuth)の主な違いはどれですか?
解答・解説を見る
正解: A. AdminInitiateAuth はサーバーサイドから呼び出し AWS 認証情報が必要。InitiateAuth はクライアントサイドから呼び出し認証情報不要
正解の根拠・詳細解説
AdminInitiateAuth はサーバーサイド(バックエンド)から IAM 認証情報を使って呼び出すセキュアな認証フローです。USER_PASSWORD_AUTH を使う場合でもクライアントシークレットが不要です。InitiateAuth はクライアントサイド(モバイル/Web)から AWS 認証情報なしで呼び出せます。セキュリティ上の理由からサーバーサイドでは AdminInitiateAuth が推奨されます。
S3 オブジェクトのサーバーサイド暗号化(SSE)の種類と特徴として正しいものはどれですか?
解答・解説を見る
正解: A. SSE-S3: AWS 管理キー、SSE-KMS: KMS CMK でキー管理・監査可能、SSE-C: ユーザーが提供するキー
正解の根拠・詳細解説
S3 SSE の3種類:①SSE-S3(AES-256):AWS が S3 マスターキーで管理、追加コストなし、②SSE-KMS:KMS CMK を使用、CloudTrail で使用状況を監査可能、キーローテーション制御可能、③SSE-C:ユーザーが各リクエストにキーを提供、AWS はキーを保存しない(HTTPS 必須)。SSE-KMS はコンプライアンス要件や監査証跡が必要な場合に使用します。
API Gateway の IAM 認証を使用する場合、クライアントはリクエストをどのように署名する必要がありますか?
解答・解説を見る
正解: B. AWS Signature Version 4(SigV4)でリクエストに署名する
正解の根拠・詳細解説
API Gateway の IAM 認証では AWS Signature Version 4(SigV4)を使ってリクエストに署名する必要があります。リクエストヘッダー(Authorization・x-amz-date・x-amz-security-token)に署名情報を含めます。AWS SDK を使うと自動的に署名されます。SigV4 はリクエストの改ざん検知とリプレイ攻撃防止の機能があります。
Lambda 関数の実行ロールに付与する権限は「最小権限の原則」に従うべきです。この原則の実践として最も正しいものはどれですか?
解答・解説を見る
正解: B. 関数が必要とする特定のアクション・リソースにのみ絞ったポリシーを作成してアタッチする
正解の根拠・詳細解説
最小権限の原則は「タスクの実行に必要な最小限の権限のみを付与する」ことです。各 Lambda 関数が必要とするアクション(例:dynamodb:GetItem・s3:PutObject)と対象リソースの ARN を明示的に指定したポリシーを作成します。AdministratorAccess(A)は侵害時のブラスト範囲が最大になります。IAM Access Analyzer を使って実際に使用している権限を分析し不要な権限を削除することも推奨されます。
DynamoDB テーブルの保存データを暗号化したいです。追加コードなしで実現できる最もシンプルな方法はどれですか?
解答・解説を見る
正解: B. DynamoDB テーブルのサーバーサイド暗号化(AWS 管理キーまたは KMS CMK)を有効化する
正解の根拠・詳細解説
DynamoDB はデフォルトでサーバーサイド暗号化(AWS 所有キー)が有効になっています。AWS 管理キーまたは KMS CMK(カスタマー管理)に変更することも可能です。アプリケーションコードの変更なし、パフォーマンス影響なしで透過的に保存データを暗号化できます。CMK を使用すると CloudTrail でキー使用の監査ログも取得できます。
EC2 インスタンスからアクセスできる特定の IAM ロールのみに S3 バケットへのアクセスを制限したいです。IP アドレスベースの制限は使えません。最適な方法はどれですか?
解答・解説を見る
正解: A. S3 バケットポリシーで Principal を特定の IAM ロール ARN に限定する
正解の根拠・詳細解説
S3 バケットポリシーの Principal に特定の IAM ロールの ARN を指定し、そのロール以外からのアクセスを Deny することで、特定ロールのみにアクセスを制限できます。例:{“Principal”: {“AWS”: “arn:aws:iam::123456789:role/MyEC2Role”}}。また aws:PrincipalOrgID 条件キーを使って Organizations 内のアカウントのみに制限することも可能です。
CloudFront ディストリビューションと S3 バケットをオリジンとして使用しています。S3 バケットを完全にプライベートに保ちつつ CloudFront 経由でのみアクセスを許可したいです。最適な設定はどれですか?
解答・解説を見る
正解: B. Origin Access Control(OAC)を設定して S3 バケットポリシーで CloudFront のみを許可する
正解の根拠・詳細解説
CloudFront OAC(Origin Access Control、旧 OAI)を設定することで、S3 バケットを完全にプライベートに保ちつつ CloudFront サービスプリンシパルからのアクセスのみを S3 バケットポリシーで許可できます。S3 の直接アクセスは拒否されます。OAC は SSE-KMS 暗号化の S3 バケットにも対応しており OAI より推奨されます。
IAM 権限境界(Permission Boundary)の主な用途はどれですか?
解答・解説を見る
正解: B. 委任された管理者が作成できる IAM エンティティの最大権限を制限する
正解の根拠・詳細解説
権限境界(Permission Boundary)は IAM エンティティ(ユーザー/ロール)が持てる最大の権限を定義するポリシーです。例えば開発者に IAM ロール作成権限を委任しつつ、開発者が自分より強い権限のロールを作成できないよう上限を設定します。実際の有効権限は「アイデンティティポリシー ∩ 権限境界」の積集合になります。Organizations の全アカウント制御は SCP です。
Lambda 関数が処理する個人情報(PII)をコード内で出力(print/console.log)しています。CloudWatch Logs から PII を保護するための最適な方法はどれですか?
解答・解説を見る
正解: B. CloudWatch Logs のデータ保護ポリシーで PII をマスキングするか、コードから PII のログ出力を削除する
正解の根拠・詳細解説
最も根本的な解決策はコードから PII のログ出力を削除することです。CloudWatch Logs のデータ保護ポリシーは既存ログの PII パターン(クレジットカード番号・SSN・メールアドレス等)を自動検出してマスキング(アスタリスク表示)できます。ただしコードでの出力を止めることが本質的な解決策です。ログ全体を削除(A)や無効化(C)は運用上の問題が生じます。
IAM ロールの信頼ポリシー(Trust Policy)とアクセスポリシーの違いはどれですか?
解答・解説を見る
正解: A. 信頼ポリシーはロールを誰が引き受けられるか(誰が AssumeRole できるか)を定義し、アクセスポリシーはロールが実行できる操作を定義する
正解の根拠・詳細解説
IAM ロールには2種類のポリシーがあります。①信頼ポリシー(Trust Policy):誰がこのロールを引き受けられるか(Principal)を定義。例:EC2 サービス、特定の IAM ユーザー、他アカウント。②アクセスポリシー(Permission Policy):このロールを引き受けたエンティティが実行できる操作(Action・Resource)を定義。両方が揃って初めてロールが機能します。
API Gateway に設定された WAF(AWS WAF)の主な役割はどれですか?
解答・解説を見る
正解: B. SQLインジェクション・XSS・レートベースのルールなど Web 攻撃からAPIを保護する
正解の根拠・詳細解説
AWS WAF はアプリケーション層(L7)のファイアウォールで、SQL インジェクション・XSS・不正な HTTP リクエスト・特定 IP アドレスや地域からのブロック・レートベースのルール(DDoS 対策)などを設定できます。API Gateway・CloudFront・ALB・AppSync に関連付けられます。マネージドルールグループ(OWASP Top 10 等)を使って素早く保護を開始できます。
Lambda 関数のコードが GitHub に公開されており、コード内に AWS アクセスキーが埋め込まれていた可能性があります。最初に行うべき対処はどれですか?
解答・解説を見る
正解: B. 露出したアクセスキーを即座に無効化・削除し、CloudTrail で不正使用を確認する
正解の根拠・詳細解説
認証情報漏洩インシデントの最優先対応:①漏洩したアクセスキーを IAM コンソールで即座に無効化・削除(悪用を止める)、②CloudTrail ログを確認して既に不正利用されていないか調査、③影響範囲の特定(どのリソースにアクセスされたか)、④コードから認証情報を削除して IAM ロールに移行、⑤Git 履歴からの削除(BFG Repo Cleaner 等)。リポジトリのプライベート化(A)は二次被害防止には有効ですが最初の対応ではありません。
AWS Secrets Manager のシークレットへのアクセスを特定の Lambda 関数のみに制限したいです。最も細かく制御する方法はどれですか?
解答・解説を見る
正解: A. Secrets Manager のシークレットポリシーに Lambda 実行ロール ARN を Principal として指定する
正解の根拠・詳細解説
Secrets Manager のリソースポリシー(シークレットポリシー)で Principal を特定の Lambda 実行ロール ARN に限定することで、そのロールを持つ Lambda 関数のみがシークレットにアクセスできます。またLambda 実行ロールのアイデンティティポリシーにも secretsmanager:GetSecretValue 権限が必要です。両方のポリシーで Allow が必要です(クロスアカウントの場合)。
AWS CodePipeline のパイプラインに含まれるステージの実行順序として正しいものはどれですか?
解答・解説を見る
正解: D. 順序はパイプラインによって異なり、どの順番でも可能
正解の根拠・詳細解説
(但し一般的ベストプラクティスはB)CodePipeline のステージ順序はユーザーが自由に定義できます。一般的な CI/CD パイプラインの構成は Source(CodeCommit/S3/GitHub)→ Build(CodeBuild)→ Test(CodeBuild/Lambda)→ Deploy(CodeDeploy/ECS/Beanstalk)の順序です。Approve アクションを挿入して人間の承認ステップを追加することも可能です。
CodeBuild のビルド設定ファイル(buildspec.yml)の主な構成要素はどれですか?
解答・解説を見る
正解: A. phases(install/pre_build/build/post_build)・artifacts・cache
正解の根拠・詳細解説
buildspec.yml の主要セクション:①version(必須)、②phases:install(依存関係インストール)・pre_build(認証等の前処理)・build(ビルド実行)・post_build(後処理・通知)、③artifacts:ビルド成果物の定義(次のステージに渡すファイル)、④cache:ビルドキャッシュ(S3 や ローカル)。CloudFormation テンプレートは Resources/Parameters/Outputs。SAM は functions/events/resources。
Elastic Beanstalk のデプロイポリシーで、ダウンタイムゼロかつ常に全キャパシティを維持しながら新バージョンに移行できるものはどれですか?
解答・解説を見る
正解: C. Rolling with additional batch
正解の根拠・詳細解説
Rolling with additional batch は現在のインスタンス数を維持しながら追加バッチを起動して新バージョンをデプロイします。全キャパシティを保ちながらゼロダウンタイムを実現できます。All at once(A)はダウンタイムあり、Rolling(B)はキャパシティが一時的に減少、Immutable(D)はゼロダウンタイムですが全キャパシティの2倍のインスタンスが一時的に必要です。Blue/Green は DNS 切り替えで完全分離します。
CloudFormation テンプレートの変更を本番環境に適用する前に変更内容を事前確認する機能はどれですか?
解答・解説を見る
正解: B. CloudFormation 変更セット(Change Set)
正解の根拠・詳細解説
CloudFormation 変更セット(Change Set)は現在のスタックに対して新テンプレートを適用した際に「何が変更・追加・削除されるか」をリソースレベルで事前にプレビューできます。変更セットを確認・承認してから execute すると実際の変更が適用されます。ドリフト検出(A)は実際のリソースがテンプレートから逸脱していないかの確認。スタックポリシー(C)はリソースの変更保護。
AWS SAM(Serverless Application Model)テンプレートの Transform 宣言の役割はどれですか?
解答・解説を見る
正解: B. SAM のショートハンド構文を CloudFormation リソースに展開することを CloudFormation に指示する
正解の根拠・詳細解説
SAM テンプレートの冒頭に「Transform: AWS::Serverless-2016-10-31」を宣言することで、CloudFormation に SAM の変換マクロを使用することを指示します。SAM::Function・SAM::Api・SAM::SimpleTable などのショートハンドリソースタイプが、対応する CloudFormation リソース(Lambda Function・API Gateway・DynamoDB Table 等)に自動展開されます。
CodeDeploy を使って EC2 に新バージョンをデプロイする際、各 EC2 インスタンスで実行するライフサイクルフックスクリプトを定義するファイルはどれですか?
解答・解説を見る
正解: B. appspec.yml
正解の根拠・詳細解説
appspec.yml(Application Specification ファイル)は CodeDeploy のデプロイ設定ファイルです。EC2 への files(コピー先)と hooks(ライフサイクルスクリプト:BeforeInstall・AfterInstall・ApplicationStart・ValidateService 等)を定義します。Lambda デプロイでは traffic shifting のフック(BeforeAllowTraffic・AfterAllowTraffic)を定義します。buildspec.yml(A)は CodeBuild 用です。
Lambda 関数の新バージョンをカナリアデプロイ(10%のトラフィックを新バージョンに段階的にシフト)するための設定はどれですか?
解答・解説を見る
正解: B. Lambda エイリアスのトラフィックシフト(加重エイリアス)と CodeDeploy を組み合わせる
正解の根拠・詳細解説
Lambda エイリアスは2つのバージョン間でトラフィックを重み付けで分割できます(例:v1=0.9、v2=0.1)。CodeDeploy と組み合わせることで自動的に段階的シフト(Canary10Percent5Minutes・Linear10PercentEvery1Minute 等)ができます。デプロイ中にエラーが検出されると自動ロールバックします。SAM の AutoPublishAlias・DeploymentPreference で簡単に設定できます。
CloudFormation テンプレートで既存の AMI ID をパラメータとして受け取る際に、使用すべきパラメータタイプはどれですか?
解答・解説を見る
正解: B. AWS::EC2::Image::Id
正解の根拠・詳細解説
CloudFormation の AWS 固有パラメータタイプ(AWS::EC2::Image::Id など)を使うと、デプロイ前に値が実際の AWS リソースとして存在するかを CloudFormation が自動検証します。存在しない AMI ID を入力するとエラーになります。String 型(A)は検証なしに文字列を受け取るだけです。他の例:AWS::EC2::VPC::Id・AWS::EC2::Subnet::Id・AWS::EC2::KeyPair::KeyName。
ECS でコンテナアプリの新バージョンをゼロダウンタイムでデプロイし、問題があった場合に自動ロールバックしたいです。最適なデプロイ方法はどれですか?
解答・解説を見る
正解: B. CodeDeploy を使った ECS の Blue/Green デプロイ
正解の根拠・詳細解説
CodeDeploy を使った ECS Blue/Green デプロイは新タスクセット(Green)を起動し、ALB のトラフィックを徐々に Green に移行します。テスト期間中に CloudWatch アラームが発火すると自動ロールバック(Blue に戻す)します。ローリングアップデート(A)もゼロダウンタイムは可能ですが自動ロールバックは組み込みではありません。Blue/Green の方が本番品質です。
CloudFormation の Outputs セクションの主な用途はどれですか?
解答・解説を見る
正解: B. スタックが作成したリソースの値(ARN・URL等)を他のスタックや AWS コンソールに公開する
正解の根拠・詳細解説
CloudFormation Outputs セクションはスタックが作成したリソースの値(ARN・エンドポイント URL・インスタンス ID 等)をエクスポートする機能です。①AWS コンソール/CLI で確認用、②他のスタックが !ImportValue で参照するためのクロススタック参照(Export Name が必要)として使用します。例えばネットワークスタックが VPC ID と Subnet ID を出力し、アプリスタックがそれを参照します。
CodeDeploy を使って EC2 に In-Place デプロイを実行しています。デプロイが失敗した場合の自動ロールバック設定はどこで行いますか?
解答・解説を見る
正解: B. CodeDeploy デプロイグループのロールバック設定(自動ロールバック on failure/alarm)
正解の根拠・詳細解説
CodeDeploy デプロイグループの設定で「デプロイ失敗時に自動ロールバック」または「CloudWatch アラーム発火時に自動ロールバック」を有効化できます。ロールバックはデプロイ成功した直前のバージョンのアーティファクトを使って新しいデプロイとして実行されます(元に戻す新しいデプロイIDが生成)。
AWS CDK(Cloud Development Kit)の主な特徴はどれですか?
解答・解説を見る
正解: B. TypeScript・Python・Java 等のプログラミング言語でインフラを定義し CloudFormation テンプレートに変換する
正解の根拠・詳細解説
AWS CDK はインフラをプログラミング言語(TypeScript・Python・Java・C#・Go)で定義する IaC ツールです。「cdk synth」でインフラ定義を CloudFormation テンプレートに変換し、「cdk deploy」で AWS にデプロイします。L1(CloudFormation リソースと1対1)・L2(ハイレベルコンストラクト)・L3(パターンコンストラクト)の3つのコンストラクトレベルがあります。
Elastic Beanstalk の .ebextensions フォルダの役割はどれですか?
解答・解説を見る
正解: B. 環境のカスタム設定(EC2 設定・追加パッケージ・環境変数等)を YAML/JSON 形式で定義する
正解の根拠・詳細解説
.ebextensions はアプリケーションソースバンドル(ZIP)内に含まれるフォルダで、.config(YAML/JSON)ファイルを使って Elastic Beanstalk 環境をカスタマイズします。EC2 へのパッケージインストール・環境変数・ファイル作成・コマンド実行・CloudFormation リソースの追加(RDS・ElastiCache 等)が可能です。デプロイのたびに適用されます。
CodeCommit リポジトリへのマージ前に必ず承認を要求したいです。最適な設定はどれですか?
解答・解説を見る
正解: A. CodeCommit の承認ルールテンプレートをリポジトリに関連付ける
正解の根拠・詳細解説
CodeCommit の承認ルールテンプレートはプルリクエストがマージされる前に必要な承認者数・承認プールを定義します。テンプレートをリポジトリに関連付けることで、そのリポジトリへのすべてのプルリクエストに承認ルールが自動適用されます。これにより GitHub の Branch Protection ルールと同様のコードレビュー強制ができます。
CloudFormation でスタックの一部リソースが誤って削除されないよう保護したいです。最適な設定はどれですか?
解答・解説を見る
正解: A. CloudFormation スタックポリシーで対象リソースへの更新・削除を拒否する
正解の根拠・詳細解説
CloudFormation スタックポリシーは IAM ポリシーに似た JSON ドキュメントで、スタック更新時に変更・削除できるリソースを制御します。重要な RDS・DynamoDB などに Update や Delete 操作を Deny することで保護できます。また各リソースに DeletionPolicy: Retain(D は Snapshot 固有)を設定するとスタック削除時でもリソースを保持できます。
CodePipeline で GitHub リポジトリの特定のブランチへのプッシュをトリガーにパイプラインを実行したいです。最新の方法はどれですか?
解答・解説を見る
正解: A. CodePipeline Source アクションで GitHub V2 接続(AWS CodeStar Connections)を使用する
正解の根拠・詳細解説
AWS CodeStar Connections(旧 GitHub V2 接続)は GitHub・GitLab・Bitbucket と CodePipeline の安全な統合を提供します。OAuth アプリ不要で GitHub App を使用し、ブランチフィルター・プルリクエストトリガーにも対応します。旧来の GitHub V1(OAuth トークン)より安全でメンテナンスが少なく済みます。
CloudFormation の WaitCondition と CreationPolicy の主な用途はどれですか?
解答・解説を見る
正解: B. EC2 起動後のアプリケーション設定完了シグナルを受け取るまでスタック作成を一時停止する
正解の根拠・詳細解説
CreationPolicy(Auto Scaling グループ・EC2 インスタンス用)と WaitCondition(汎用)は cfn-signal コマンドからの成功シグナルを受け取るまで CloudFormation のスタック作成を待機させます。EC2 の User Data でアプリのインストールが完了したら cfn-signal で CloudFormation に通知し、CloudFormation はその後に次のリソース作成に進みます。タイムアウト内にシグナルを受け取れないとスタック作成が失敗します。
Elastic Beanstalk 環境のモニタリングで、アプリケーションの health check URL をカスタマイズする設定場所はどれですか?
解答・解説を見る
正解: B. Elastic Beanstalk 環境の設定(Load Balancer の Health Check Path)
正解の根拠・詳細解説
Elastic Beanstalk の環境設定(Elastic Beanstalk コンソール・.ebextensions・EB CLI)でロードバランサーのヘルスチェックパス(例:/health)を設定します。また Enhanced Health Reporting を有効化すると EC2 インスタンス・ELB レベルの詳細なヘルス情報が得られます。
CodeBuild プロジェクトのビルドが断続的に失敗します。ビルドログで「OOMKilled」エラーが確認されました。最も適切な対処方法はどれですか?
解答・解説を見る
正解: B. CodeBuild プロジェクトのコンピュートタイプをより大きいサイズ(メモリ増加)に変更する
正解の根拠・詳細解説
OOMKilled(Out of Memory Killed)はビルドコンテナのメモリが不足していることを示します。CodeBuild のコンピュートタイプ(BUILD_GENERAL1_SMALL→MEDIUM→LARGE→2XLARGE)を上げることでメモリを増加させます。大規模なコンパイルやテスト実行には十分なメモリが必要です。タイムアウト延長(A)はメモリ問題の解決にはなりません。
Lambda 関数のデプロイに SAM テンプレートを使用しています。ローカルで Lambda 関数をデバッグ実行する最適な方法はどれですか?
解答・解説を見る
正解: B. sam local invoke / sam local start-api を使ってローカルでテストする
正解の根拠・詳細解説
SAM CLI の「sam local invoke」は Lambda 関数を Docker コンテナでローカル実行できます。「sam local start-api」はローカルに API Gateway を模したエンドポイントを起動します。AWS 環境にデプロイせずに開発サイクルを高速化できます。VSCode や JetBrains との統合でブレークポイントによるステップ実行デバッグも可能です。
CodePipeline のパイプラインステージで手動承認アクションを追加したいです。承認リクエストが来たときに担当者に通知する仕組みはどれですか?
解答・解説を見る
正解: B. 手動承認アクションの設定で SNS トピックを指定し、承認者に通知する
正解の根拠・詳細解説
CodePipeline の手動承認アクション設定で SNS トピックと承認者のメールアドレスを指定できます。承認リクエストが発生すると SNS から承認者にメールが届き、リンクをクリックして承認/拒否ができます。承認後にパイプラインが再開します。タイムアウト設定(デフォルト7日)を超えると自動的に失敗扱いになります。
ECR(Elastic Container Registry)に Docker イメージをプッシュするために必要な認証コマンドはどれですか?
解答・解説を見る
正解: B. aws ecr get-login-password | docker login –username AWS –password-stdin <registry>
正解の根拠・詳細解説
ECR への認証は「aws ecr get-login-password –region <region> | docker login –username AWS –password-stdin <account>.dkr.ecr.<region>.amazonaws.com」コマンドを使います。このトークンは12時間有効です。CodeBuild での ECR プッシュは実行ロールに ecr:GetAuthorizationToken と ecr:BatchCheckLayerAvailability 等の権限が必要です。
CloudFormation カスタムリソース(Custom Resource)を使う主な目的はどれですか?
解答・解説を見る
正解: A. CloudFormation がネイティブにサポートしていないリソースや処理を Lambda で実装する
正解の根拠・詳細解説
CloudFormation カスタムリソース(AWS::CloudFormation::CustomResource または Custom::MyResource)はCloudFormation が標準でサポートしないリソースや操作を Lambda 関数で実装できます。使用例:サードパーティ API の呼び出し・既存 DNS レコードの更新・シークレットの生成・他サービスへのデータ登録。スタック作成/更新/削除時に Lambda が呼び出されます。
複数の開発者が同時に Elastic Beanstalk 環境を使って開発しており、デプロイの競合が問題になっています。最も適切な解決策はどれですか?
解答・解説を見る
正解: B. 開発者ごとに独立した Elastic Beanstalk 環境を作成する(eb clone)
正解の根拠・詳細解説
「eb clone」コマンドで既存環境を複製し、開発者ごとに独立した環境を作成できます。各開発者が自分の環境でテストでき、他の開発者に影響を与えません。Elastic Beanstalk は複数環境(dev/staging/prod)の管理が容易で、環境ごとに異なる設定・バージョンを管理できます。本番環境への直接デプロイ(A)は品質・安定性リスクが高いです。
CodeDeploy で Lambda へのデプロイ時に使えるデプロイ設定として正しいものはどれですか?
解答・解説を見る
正解: B. AllAtOnce: 一括移行、Canary: 一定割合を先行移行後全移行、Linear: 一定間隔で段階的移行
正解の根拠・詳細解説
Lambda の CodeDeploy デプロイ設定:①LambdaAllAtOnce(即座に全トラフィック移行)、②LambdaCanary10Percent5Minutes(10%を5分間先行 → 残り90%を一括)、③LambdaLinear10PercentEvery1Minute(1分ごとに10%ずつ10分で全移行)等があります。Canary/Linear デプロイ中に CloudWatch アラームが発火すると自動ロールバックします。
CloudFormation StackSets を使う主なユースケースはどれですか?
解答・解説を見る
正解: B. 複数の AWS アカウントや複数リージョンに同一のスタックを一括デプロイ・管理する
正解の根拠・詳細解説
CloudFormation StackSets は1つのテンプレートから複数アカウント・複数リージョンへ同時にスタックをデプロイ・更新・削除できます。Organizations と統合して自動デプロイが可能です。代表的なユースケース:セキュリティベースラインの全アカウント展開・IAM ロールの統一・CloudTrail・Config の全リージョン有効化・ガードレールの強制適用。
AWS Amplify を使ったフロントエンド(React)と Lambda バックエンドの統合アプリ開発で、Amplify が提供する主な機能はどれですか?
解答・解説を見る
正解: A. フロントエンドホスティング・認証・API・ストレージ・CI/CD を統合したフルスタック開発基盤
正解の根拠・詳細解説
AWS Amplify はフルスタックのサーバーレスアプリ開発・デプロイプラットフォームです。Amplify Hosting(SPA・SSRホスティング・GitベースCI/CD)、Amplify Auth(Cognito)、Amplify API(AppSync GraphQL・REST)、Amplify Storage(S3)、Amplify DataStore(オフライン対応)を CLI・ライブラリ・コンソールから統合管理できます。
CodeBuild でビルドのたびに npm install を実行するのでビルド時間が長くなっています。node_modules のキャッシュを活用して高速化する方法はどれですか?
解答・解説を見る
正解: B. buildspec.yml の cache セクションで node_modules を S3 にキャッシュする
正解の根拠・詳細解説
buildspec.yml の cache セクションで paths に「node_modules/**/*」を指定すると、S3 にキャッシュされます(ローカルキャッシュも可能)。2回目以降のビルドではキャッシュがあれば npm install の時間が大幅短縮されます。キャッシュの無効化は package-lock.json の変更をトリガーに自動的に行われます(S3 のキャッシュキーが変わるため)。
Elastic Beanstalk のワーカー環境(Worker Environment)の主なユースケースはどれですか?
解答・解説を見る
正解: B. SQS キューからメッセージを取得して非同期バックグラウンド処理を実行する
正解の根拠・詳細解説
Elastic Beanstalk のワーカー環境は SQS キューと統合された非同期処理専用の環境です。デーモンプロセスが SQS からメッセージを自動的にポーリングし、ローカルの HTTP エンドポイント(http://localhost/)に POST します。アプリはそのリクエストを処理します。長時間バッチ処理・画像変換・データ集計などのバックグラウンドタスクに使用します。Web 環境と組み合わせて Web-Worker の分離アーキテクチャを構築できます。
Lambda 関数が特定のリクエストでタイムアウトエラー(Task timed out after X seconds)を返しています。デバッグの最初のステップとして最適なものはどれですか?
解答・解説を見る
正解: B. CloudWatch Logs と X-Ray トレースで実行時間の長い処理(外部 API 呼び出し・DB クエリ等)を特定する
正解の根拠・詳細解説
タイムアウトのデバッグは原因特定が先決です。CloudWatch Logs でどの処理に時間がかかっているかを確認し、X-Ray トレースで各セグメント(外部 API・DynamoDB・RDS 等)の所要時間を可視化します。タイムアウト値を単に延長する(D)は根本解決にならず、原因不明の遅延が続く場合があります。VPC の DNS 解決遅延・接続プールの枯渇・ネットワーク設定もタイムアウトの原因になります。
API Gateway で 504 Gateway Timeout エラーが発生しています。原因として最も可能性が高いものはどれですか?
解答・解説を見る
正解: B. Lambda 関数が API Gateway の統合タイムアウト(最大29秒)内に応答しなかった
正解の根拠・詳細解説
API Gateway の統合タイムアウトは最大29秒(変更不可)です。Lambda 関数がこの時間内にレスポンスを返せないと 504 エラーになります。Lambda タイムアウトが29秒以上でも API Gateway 側でタイムアウトします。対策:処理を非同期化(SQS + Lambda)・Lambda 処理の最適化・コールドスタート対策(プロビジョンドコンカレンシー)。400番台(A/C/D)はクライアントエラーで 504 とは異なります。
AWS X-Ray でトレースを取得したいです。Lambda 関数でのX-Ray 有効化の方法として正しいものはどれですか?
解答・解説を見る
正解: B. Lambda 設定でアクティブトレースを有効化し、実行ロールに xray:PutTraceSegments 権限を付与する
正解の根拠・詳細解説
Lambda の X-Ray 有効化手順:①Lambda 設定でアクティブトレース(Active Tracing)を有効化、②実行ロールに「xray:PutTraceSegments」と「xray:PutTelemetryRecords」権限を付与。X-Ray SDK(aws-xray-sdk-python 等)をコードに追加すると、サブセグメントで外部呼び出し(DynamoDB・HTTP 等)の詳細なトレースも取得できます。
CloudWatch Logs Insights を使って Lambda のエラーログを集計したいです。正しいクエリ構文はどれですか?
解答・解説を見る
正解: B. fields @timestamp, @message | filter @message like /ERROR/ | sort @timestamp desc | limit 20
正解の根拠・詳細解説
CloudWatch Logs Insights 独自のクエリ言語を使います。主なコマンド:fields(フィールド選択)・filter(条件フィルター)・sort(ソート)・limit(件数制限)・stats(集計)・parse(文字列パース)。正規表現フィルター like /パターン/ または filter @message like /ERROR/ で使用します。SQL ライクですが独自構文です。aws logs filter-log-events(D)は CLI コマンドでクエリ言語ではありません。
DynamoDB で ProvisionedThroughputExceededException が頻発しています。Read Capacity が足りない状況です。即時に対応できる解決策はどれですか?
解答・解説を見る
正解: B. Exponential Backoff(指数バックオフ)で SDK のリトライロジックを実装する、または On-Demand モードに変更する
正解の根拠・詳細解説
ProvisionedThroughputExceededException への対応:①短期:Exponential Backoff(指数関数的な待機時間増加)でリトライ(AWS SDK はデフォルトでリトライします)、②中期:DAX のキャッシュでリードスループットを削減、③根本解決:RCU を増加する・On-Demand モードに変更(自動スケール)・GSI の追加でアクセス分散。ホットパーティションが原因の場合はキー設計の見直しも必要です。
Lambda 関数のメモリ使用率が常に90%以上です。パフォーマンスと安定性を改善するための対処はどれですか?
解答・解説を見る
正解: B. Lambda のメモリサイズを増やす(CPU も比例して増加するため処理速度も向上する可能性がある)
正解の根拠・詳細解説
Lambda のメモリサイズを増やすと同時に CPU パワーも比例して増加します(128MB〜10,240MBの範囲で設定)。メモリ使用率が90%超の場合はOOMエラーのリスクがあるため増加が推奨されます。また、コードの最適化(大きなオブジェクトの解放・不要な変数のスコープ管理)も重要です。Lambda Power Tuning で最適なメモリサイズとコストのバランスを確認しましょう。
API Gateway の 400 Bad Request エラーの主な原因はどれですか?
解答・解説を見る
正解: B. クライアントが送信したリクエストのフォーマット・パラメータ・認証が不正
正解の根拠・詳細解説
HTTP 4xx はクライアント側のエラーです。400(Bad Request):リクエスト形式不正・必須パラメータ欠如・バリデーションエラー、401(Unauthorized):認証なし、403(Forbidden):認可エラー・リソースポリシー拒否、404(Not Found):存在しないパス、429(Too Many Requests):スロットリング。5xx はサーバー側エラー(500=Lambda 内部エラー、502=Lambda レスポンス形式不正、504=タイムアウト)。
SQS キューのメッセージが処理されずに蓄積し続けています。デバッグのためにどの指標を最初に確認すべきですか?
解答・解説を見る
正解: B. CloudWatch の ApproximateNumberOfMessagesVisible・Lambda のエラー率・実行中の Lambda の同時実行数
正解の根拠・詳細解説
SQS メッセージ蓄積のデバッグに確認すべきメトリクス:①ApproximateNumberOfMessagesVisible(キューに滞留しているメッセージ数)、②Lambda の Errors メトリクス(処理失敗率)、③Lambda の ConcurrentExecutions(スロットリング発生有無)、④ApproximateAgeOfOldestMessage(最古メッセージの経過時間)、⑤NumberOfMessagesSent vs Deleted の差。Lambda がスロットリングされている場合はリザーブド同時実行数の制限を確認します。
X-Ray のサービスマップでエラー率が高いサービスを特定しました。次にどの情報を確認しますか?
解答・解説を見る
正解: B. X-Ray のトレースリストからエラーのあるトレースを選択して例外・スタックトレースを確認する
正解の根拠・詳細解説
X-Ray サービスマップでエラー率の高いノードをクリックするとエラーのあるトレースが表示されます。個別トレースを開くと各セグメント・サブセグメントの実行時間・エラー内容・例外スタックトレースが確認できます。レスポンスコード(4xx/5xx)の分布や、どのダウンストリームサービス(DynamoDB・HTTP等)でエラーが発生しているかも特定できます。
CloudWatch Contributor Insights の主な用途はどれですか?
解答・解説を見る
正解: B. ログやメトリクスデータから「最も影響の大きい要因(トップ寄与者)」を特定する。例:エラーを多く発生させているユーザー ID やホットな DynamoDB パーティション
正解の根拠・詳細解説
CloudWatch Contributor Insights はログデータをリアルタイムで分析して「特定の指標に最も寄与しているエンティティ(Top-N)」を特定できます。ユースケース:①DynamoDB のホットパーティション(最もリクエストを受けているパーティションキー)の特定、②API のエラーを最も多く発生させているクライアント IP の特定、③最も頻繁にエラーを生じさせているユーザーの特定。ルールを定義するだけで自動分析されます。
Lambda 関数でカスタムメトリクスを効率的に CloudWatch に送信したいです。API 呼び出しを増やさずに実現する最新の方法はどれですか?
解答・解説を見る
正解: B. CloudWatch Embedded Metrics Format(EMF)を使ってログに埋め込む
正解の根拠・詳細解説
CloudWatch Embedded Metrics Format(EMF)は CloudWatch Logs に特定の JSON 構造でログを出力するだけで CloudWatch カスタムメトリクスが自動的に生成される機能です。追加の API 呼び出しが不要で、ログとメトリクスを同時に記録できます。Lambda・ECS・EC2 で使えます。aws-embedded-metrics ライブラリで簡単に実装できます。PutMetricData(A)は追加のAPIコールとレイテンシが発生します。
Lambda 関数が VPC 内に配置されており、Secrets Manager の呼び出しでタイムアウトが発生しています。ネットワーク設定の問題として最も可能性が高いものはどれですか?
解答・解説を見る
正解: B. NAT Gateway がないまたは Secrets Manager の VPC エンドポイントが設定されていない
正解の根拠・詳細解説
VPC 内の Lambda が Secrets Manager(パブリックエンドポイント)に接続するには、①NAT Gateway 経由のインターネットアクセス、または②Secrets Manager 用の VPC インターフェースエンドポイント(com.amazonaws.region.secretsmanager)のどちらかが必要です。どちらもない場合、接続試行がタイムアウトします。VPC エンドポイントの方がセキュアで NAT Gateway コストも不要です。
CloudWatch アラームの状態が「INSUFFICIENT_DATA」になっています。この状態の意味はどれですか?
解答・解説を見る
正解: B. アラームを評価するのに十分なデータがない状態(リソースが停止しているか、メトリクスデータが届いていない)
正解の根拠・詳細解説
CloudWatch アラームには3つの状態があります:①OK:閾値以下で正常、②ALARM:閾値を超えた異常状態(通知・アクション実行)、③INSUFFICIENT_DATA:評価に必要なデータポイントが不足している状態。EC2 が停止している場合・メトリクスがまだ収集されていない場合・カスタムメトリクスが停止している場合に発生します。アラーム作成直後や監視対象が停止した場合にこの状態になります。
Lambda 関数の処理が遅い原因を調べると「Init Duration」が長いことがわかりました。これを改善する方法はどれですか?
解答・解説を見る
正解: B. デプロイパッケージを軽量化(不要な依存関係の削除・Lambda Layer の活用)し、初期化コードを最適化する
正解の根拠・詳細解説
Init Duration はコールドスタート時の初期化時間(環境のプロビジョニング+パッケージのロード+グローバルスコープのコード実行)です。改善策:①デプロイパッケージを軽量化(使用しないライブラリの削除・tree-shaking)、②グローバルスコープの初期化処理を軽量化(遅延初期化 lazy loading)、③コンテナイメージの場合は最適化・キャッシュ活用、④プロビジョンドコンカレンシーでコールドスタートを排除。
Elastic Beanstalk の環境がメンテナンス中に degraded 状態になっています。何を確認すべきですか?
解答・解説を見る
正解: B. Elastic Beanstalk の環境ヘルスページ・イベントログ・EC2 インスタンスのログ(/var/log/)を確認する
正解の根拠・詳細解説
Elastic Beanstalk の degraded 状態のデバッグ:①環境ヘルスページでどのインスタンスが unhealthy かを確認、②Events ページでデプロイ・スケーリングイベントを確認、③Logs リクエストで EC2 の /var/log/eb-engine.log・アプリのログを取得、④CloudWatch Logs(Enhanced Health Reporting が有効な場合)を確認。ヘルスチェックのパスが正しく返答しているかも確認します。
アプリケーションが AWS SDK で S3 GetObject を呼び出す際に断続的に NoSuchKey エラーが発生しています。S3 のオブジェクトは確かに存在します。最も可能性の高い原因はどれですか?
解答・解説を見る
正解: B. キー名の大文字・小文字・スラッシュ等の不一致(S3 のキーは大文字小文字を区別する)
正解の根拠・詳細解説
S3 のオブジェクトキーは大文字小文字を区別します(例:「Photo.jpg」と「photo.jpg」は別オブジェクト)。断続的に発生する場合、異なるコードパスが異なるキー名を生成している可能性があります。また URL エンコード・スペース・特殊文字の扱いも確認が必要です。NoSuchKey は「バケットは存在するがキーが見つからない」エラーで、NoSuchBucket と区別して確認します。
Lambda 関数の実行ロールに必要な権限があるにもかかわらず DynamoDB へのアクセスが AccessDeniedException で拒否されます。考えられる原因はどれですか?
解答・解説を見る
正解: B. DynamoDB リソースベースポリシーまたは SCP で Deny が設定されている可能性がある
正解の根拠・詳細解説
IAM ポリシーで Allow があっても AccessDeniedException が発生する場合、明示的な Deny が別のポリシーに存在します。確認場所:①SCP(Organizations)でアクション/リソースが Deny されていないか、②IAM 権限境界(Permission Boundary)、③DynamoDB リソースベースポリシー(存在する場合)、④セッションポリシー(AssumeRole 時に制限されていないか)。「Allow があるのに Deny」はこれらが原因です。
Step Functions のステートマシンが特定のステートで失敗しています。エラーの詳細(エラーコード・原因・入力・出力)を確認する場所はどれですか?
解答・解説を見る
正解: B. Step Functions コンソールの実行履歴でステートの入出力・エラー詳細を確認する
正解の根拠・詳細解説
Step Functions コンソールの実行詳細ページでは、各ステートの入力・出力・エラーコード・原因(Cause)をグラフィカルに確認できます。ステートマシンの視覚的なフロー図で失敗したステートが赤くハイライトされます。Standard Workflow は完全な実行履歴を90日間保持します。Express Workflow は CloudWatch Logs への記録設定が必要です。
Kinesis Data Streams のコンシューマーがエラーなく動作しているのにデータが処理されない場合、最初に確認すべき事項はどれですか?
解答・解説を見る
正解: B. GetRecords.IteratorAgeMilliseconds の値(ラグ)・シャードのシーケンスイテレータが古くなっていないか
正解の根拠・詳細解説
Kinesis データ処理ラグのデバッグ:①GetRecords.IteratorAgeMilliseconds が増加している場合、コンシューマーが追いついていないことを意味します、②MillisBehindLatest メトリクスでラグを確認、③シーケンスイテレータが EXPIRED(シャードの24時間保持期間を超えた)場合はデータが失われた可能性があります。対処:シャード数を増やす・コンシューマーを最適化・Enhanced Fan-Out でスループットを向上させます。
Cognito User Pool を使った認証で、ユーザーがサインアップ後にメール確認をしないとサインインできません。確認なしでユーザーを即時サインイン可能にする設定はどれですか?
解答・解説を見る
正解: B. AdminConfirmSignUp API または User Pool の「自動確認(Auto Confirm)」設定 or Pre-SignUp Lambda トリガーで自動確認する
正解の根拠・詳細解説
Cognito の確認をスキップする方法:①AdminConfirmSignUp API(管理者が手動または自動で確認)、②Pre-SignUp Lambda トリガー内で event.response.autoConfirmUser = true を返す(サインアップ時に自動確認)、③電話/メール確認を不要にする User Pool 設定の変更。Pre-SignUp トリガーはメール確認なしの即時アカウント作成に便利ですが、スパムアカウント対策を別途実装する必要があります。
API Gateway の CloudWatch メトリクスで確認できる重要な指標を3つ選ぶとしたら、どれが最も有用ですか?
解答・解説を見る
正解: A. Count(リクエスト数)・4XXError(クライアントエラー率)・5XXError(サーバーエラー率)
正解の根拠・詳細解説
API Gateway の主要 CloudWatch メトリクス:①Count:合計リクエスト数、②4XXError:クライアントエラー(認証失敗・不正リクエスト等)の割合、③5XXError:サーバーエラー(Lambda 失敗・タイムアウト等)の割合、④Latency:全体の応答時間、⑤IntegrationLatency:Lambda 等バックエンドの処理時間。4XX と 5XX を分けて監視することでクライアント側とサーバー側の問題を区別できます。
DVA-C02 試験の合格に向けて最も重要な学習アプローチはどれですか?
解答・解説を見る
正解: B. Lambda・DynamoDB・API Gateway・CodeシリーズのCI/CDパイプラインを実際に構築し、SDK/CLI 操作・エラーコードを深く理解する
正解の根拠・詳細解説
DVA-C02 は開発者向けの試験で、実際のコーディング・デプロイ・トラブルシューティング能力が問われます。合格のカギ:①Lambda(イベントソース・エラーハンドリング・バージョン管理)、②DynamoDB(クエリ設計・条件式・Streams)、③API Gateway(統合タイプ・認証・CORS)、④CodeCommit/Build/Deploy/Pipeline のCI/CDパイプライン、⑤Cognito・KMS・Secrets Manager のセキュリティ、⑥X-Ray・CloudWatch のデバッグ。ハンズオンラボで実際に操作することが最短合格への道です。