AWS認定資格 WEB問題集&徹底解説

ソリューションアーキテクト-プロフェッショナル

正解 A問題
要復習(もう一度解きたい問題) 1 2 3 4
合格に向けて、もっと深く学習する
豊富な問題と詳細なAWSサービス解説を、24時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
ある会社が、Amazon API Gateway、AWS Lambda 関数、Amazon Cognito、Amazon DynamoDB を使用するサーバーレスモバイルアプリケーションを実行しています。トラフィックが急増すると、ユーザーから、断続的にシステム障害が発生しているとの報告があります。API Gateway API エンドポイントが、有効なリクエストに対して HTTP ステータスコード 502 (Bad Gateway) エラーを返しています。

この問題を解決するソリューションはどれですか。
  • Lambda 関数の同時実行クォータを増やす。ConcurrentExecutions メトリクスがクォータに近づいた ときに通知アラートを送信するように Amazon CloudWatch を設定する。
  • API Gateway API エンドポイントの 1 秒あたりのトランザクションクォータに関する通知アラートを 設定する。クォータに達したときにクォータを増やす Lambda 関数を作成する。
  • 複数の AWS リージョンの Amazon Cognito ユーザープールにユーザーをシャーディングして、 ユーザー認証のレイテンシーを低減する。
  • DynamoDB の強力な整合性のある読み込みを使用して、クライアントアプリケーションが常に最新の データを受信できるようにする。
解説 頻出度★★★★★
この問題は、「トラフィック急増 × 断続的な障害 × API Gateway が 5xx(502)を返す」という症状から、原因はバックエンドの AWS Lambda 側(同時実行数の上限)にあると切り分け、同時実行クォータの引き上げと監視を選べるかがポイント
正解

A. Lambda 関数の同時実行クォータを増やす。ConcurrentExecutions メトリクスがクォータに近づいた ときに通知アラートを送信するように Amazon CloudWatch を設定する。

トラフィックが急増して Lambda の同時実行数が上限に達すると、超過分の呼び出しはスロットリングされて失敗し、API Gateway はクライアントに 5xx(502 など)のエラーを返す。断続的な障害という症状とも一致する。
同時実行クォータを引き上げれば急増を吸収でき、ConcurrentExecutions メトリクスの CloudWatch アラームで上限に近づいた段階を検知できるため、再発を予防できる。
症状の根本原因(バックエンドの容量不足)に直接手を打つ唯一の選択肢。

B. API Gateway API エンドポイントの 1 秒あたりのトランザクションクォータに関する通知アラートを 設定する。クォータに達したときにクォータを増やす Lambda 関数を作成する。

API Gateway 側のスロットリング(1 秒あたりのリクエスト上限)に達した場合にクライアントへ返るのは 429 Too Many Requests であり、502 ではない。症状の説明がつかない。
また、クォータの引き上げは Service Quotas 経由の申請で即時には反映されないため、「上限に達したら Lambda 関数で自動的に引き上げる」という運用は成立しない。
入口側の設定をいじっても、詰まっているバックエンドは解消しない。

C. 複数の AWS リージョンの Amazon Cognito ユーザープールにユーザーをシャーディングして、 ユーザー認証のレイテンシーを低減する。

Amazon Cognito のユーザープールを複数リージョンに分割するのは認証のレイテンシーやユーザー数のスケールに関する話で、API Gateway が返す 502 の原因ではない。
問題文には認証の遅延やサインインの失敗は書かれておらず、症状と対策が結びついていない
リージョン分割はユーザー管理を複雑にするだけで、急増時の障害は残る。

D. DynamoDB の強力な整合性のある読み込みを使用して、クライアントアプリケーションが常に最新の データを受信できるようにする。

DynamoDB の強力な整合性のある読み込みはデータの鮮度に関するオプションで、502 エラーとは無関係。
むしろ強力な整合性のある読み込みは結果整合性の 2 倍の読み込みキャパシティを消費し、急増時のスロットリングを悪化させる方向に働く。
症状(バックエンドの容量不足)とはまったく別の軸の対策であり誤り。

これだけ覚える(記憶フック)
5xx はバックエンドのせい、429 は入口のせい。急増で 502 なら Lambda の同時実行数を疑う。
正解への思考ルート 問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。
要件 判断ポイント
API Gateway が有効なリクエストに HTTP 502(Bad Gateway)を返す 5xx はバックエンド統合(Lambda)側の異常を示す。入口(API Gateway)の設定ではなく Lambda を疑う
→選択肢(A)は候補
トラフィックが急増したときだけ断続的に発生する 平常時は正常=コードの不具合ではなく容量(同時実行数)の上限に達している兆候
→選択肢(A)が正解
API Gateway のスロットリング上限に達した場合 クライアントに返るのは 429 Too Many Requests であって 502 ではない。クォータの自動引き上げも即時反映されず非現実的
→選択肢(B)を消す
症状に認証の遅延・失敗は含まれない Cognito ユーザープールの分割は認証レイテンシーの対策で、502 の原因ではない
→選択肢(C)を消す
症状にデータの不整合・古いデータの表示は含まれない DynamoDB の強力な整合性のある読み込みはデータ鮮度の対策。むしろ RCU を 2 倍消費し悪化させうる
→選択肢(D)を消す
ひっかけポイント
  • 「トラフィック急増」の一語で API Gateway のスロットリング(選択肢 B)に飛びつきやすいが、その場合に返るのは 429。エラーコードが 502 である点が切り分けの決め手
  • 選択肢 B の「クォータに達したときにクォータを増やす Lambda 関数」は自動化として賢そうに見えるが、サービスクォータの引き上げは即時反映されないため、急増の最中には間に合わない
  • Cognito・DynamoDB という構成に登場するサービス名を使った誤答(C・D)は、もっともらしいが症状(502)と因果関係がない。「その対策で 502 が消えるか」を必ず自問する
  • ConcurrentExecutions の CloudWatch アラームは「上限に達する前に気づく」ための予防策。正解の選択肢が恒久対策と監視をセットにしている点も、AWS が好む解答パターン
出題バリエーション 同じ知識が本番では条件を変えて出題されます。
問題文がこう変わったら 正解はこう変わる
「エラーコードが 429 Too Many Requests である」 API Gateway のスロットリング設定・使用量プラン・クォータ引き上げが正解軸に。
「特定の関数だけが他の関数の同時実行枠を食いつぶしている」 予約済み同時実行(Reserved Concurrency)で関数ごとに枠を確保するのが正解。
「急増直後のレイテンシー(コールドスタート)が問題」 プロビジョニング済み同時実行(Provisioned Concurrency)が正解軸に。
「エラーが 504 Gateway Timeout である」 統合タイムアウト(既定 29 秒)超過。処理の非同期化(SQS・Step Functions)や処理時間短縮が正解軸に。
「DynamoDB で ProvisionedThroughputExceededException が出ている」 オンデマンドキャパシティや Auto Scalingへの切り替えが正解軸に。
関連サービスの解説 Amazon API Gateway
Amazon CloudWatch
Amazon Cognito
Amazon DynamoDB
AWS Lambda
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 54%
No.4 解説
ある会社が、Amazon API Gateway、AWS Lambda 関数、Amazon Cognito、Amazon DynamoDB を使用するサーバーレスモバイルアプリケーションを実行しています。トラフィックが急増すると、ユーザーから、断続的にシステム障害が発生しているとの報告があります。API Gateway API エンドポイントが、有効なリクエストに対して HTTP ステータスコード 502 (Bad Gateway) エラーを返しています。

この問題を解決するソリューションはどれですか。
  • Lambda 関数の同時実行クォータを増やす。ConcurrentExecutions メトリクスがクォータに近づいた ときに通知アラートを送信するように Amazon CloudWatch を設定する。
  • API Gateway API エンドポイントの 1 秒あたりのトランザクションクォータに関する通知アラートを 設定する。クォータに達したときにクォータを増やす Lambda 関数を作成する。
  • 複数の AWS リージョンの Amazon Cognito ユーザープールにユーザーをシャーディングして、 ユーザー認証のレイテンシーを低減する。
  • DynamoDB の強力な整合性のある読み込みを使用して、クライアントアプリケーションが常に最新の データを受信できるようにする。

(会員限定)当問題の評価をお願いします。改善に活用します。