DVAAWSのサービスを使用した開発

開発者はAWS SAM(Serverless Application Model)を使用してサーバーレスAPIを開発しています。ローカル環境でAPIエンドポイントの動作をテストしたいですが、本番DynamoDBテーブルへの接続を避け、ローカルで起動したDynamoDB Localに接続させたいと考えています。最も適切なコマンドと手順はどれですか?

A
`sam local invoke`を使用し、--eventオプションでHTTPリクエスト形式のJSONイベントファイルを渡す
sam local invokeは単発Lambda実行テストに限定されており、HTTPリクエスト処理やAPIゲートウェイ統合をシミュレートできません。API統合テストにはstart-apiが必須です。
B
`sam local start-api`を実行し、--env-varsオプションでDynamoDBエンドポイントをオーバーライドした環境変数JSONファイルを指定する
✓ 正解
sam local start-apiはローカルHTTPサーバーを起動してAPIテストが可能で、--env-varsオプションで環境変数をオーバーライドできます。DynamoDB Local接続も容易に実現できます。
C
`sam deploy --guided`を実行してテスト用スタックをAWSに一時デプロイし、テスト後に手動でスタックを削除する
sam deploy --guidedはAWS環境への実際のデプロイコマンドで、ローカルテストには使用不可。CloudFormationスタックが実AWS環境に作成されてしまいます。
D
`sam build`でビルド後に`aws cloudformation deploy`コマンドでローカルスタックとしてデプロイする
aws cloudformation deployもAWSへのデプロイコマンドであり、ローカルスタック実行には機能しません。ローカルテストはSAM CLIのローカル実行機能を使う必要があります。

解説

`sam local start-api`はローカルにHTTPサーバーを起動してLambda関数をAPIとしてテストできます。`--env-vars env.json`オプションで関数の環境変数をオーバーライドでき、`DYNAMODB_ENDPOINT: http://localhost:8000`のように設定することでDynamoDB Localに接続させられます。 選択肢Aの`sam local invoke`は個別Lambda関数の単発実行のみでAPIエンドポイントのテストには`start-api`が適切です。 選択肢Cの`sam deploy --guided`はAWS環境への実際のデプロイコマンドであり、ローカルテストには使用できません。 選択肢Dの`aws cloudformation deploy`もAWSへのデプロイコマンドであり、ローカルで実行するスタックとしては機能しません。

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

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

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