無限ノック › DVA 練習問題一覧 › 問題
DVAデプロイ

開発者がAWS SAMで構築したサーバーレスアプリケーション(API GatewayのRESTエンドポイント経由でLambda関数を呼び出す構成)を、AWSへデプロイする前にローカル開発環境で統合テストしたいと考えています。実際のAPI GatewayのHTTPエンドポイントの挙動を模倣し、curlやPostmanからHTTPリクエストを送信してLambda関数の応答を検証する必要があります。ローカルではDockerが利用可能です。最も適切な方法はどれですか。

A
sam local start-api を実行し、ローカルで起動したHTTPエンドポイントに対してリクエストを送信する
✓ 正解
SAMテンプレートのAPI定義からローカルHTTPサーバーを起動し、DockerでLambdaをエミュレートしてHTTPリクエストをルーティングします。curl等でエンドポイントを叩く統合テストが可能で、デプロイ前ローカル検証の要件を満たします。
B
sam local invoke に対してイベントJSONファイルを渡し、Lambda関数を単体で実行して出力を確認する
sam local invokeはイベントJSONを渡してLambda関数を単独で実行するだけです。API GatewayのHTTPエンドポイントを公開しないため、HTTPリクエスト経由の統合テストという要件を満たせません。
C
sam deploy --guided でステージング用スタックにデプロイし、払い出されたURLに curl でリクエストする
sam deployはアーティファクトをAWS環境へ実際にデプロイする操作です。ローカルでテストするという前提に反し、デプロイ前のローカル検証には該当しません。
D
sam local generate-event apigateway でサンプルイベントを生成し、CloudWatch Logsで結果を確認する
sam local generate-eventはAPI Gateway形式のサンプルイベントJSONを生成するヘルパーにすぎず、HTTPサーバーの起動や関数実行は行いません。単体ではテストを完結できないため不適切です。

解説

sam local start-api は、SAMテンプレートのAPI定義を読み取りローカルにHTTPサーバーを起動します。Dockerコンテナ上でLambda関数をエミュレートし、実際のAPI Gatewayと同様にHTTPリクエストを受け付けてルーティングするため、curlやPostmanからエンドポイントを叩いて統合テストできます。デプロイ前のローカル検証という要件に合致します。 選択肢の sam local invoke はLambda関数を単体実行するもので、HTTPエンドポイントを公開せずAPI Gateway層の検証ができません。 選択肢の sam deploy はAWSへ実際にデプロイする操作であり、ローカルテストの要件に反します。 選択肢の sam local generate-event はテスト用イベントを生成するだけで、HTTPエンドポイントの起動やリクエスト処理は行いません。

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

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

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