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エンドポイントの起動やリクエスト処理は行いません。