翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Terraform と連携させた AWS SAM CLI をローカルでのデバッグおよびテストに使用する方法
このトピックでは、サポートされている AWS Serverless Application Model コマンドラインインターフェイス (AWS SAMCLI) コマンドをTerraformプロジェクトと で使用する方法について説明しますTerraform Cloud。
フィードバックや機能に関する要望を送るには、GitHub Issue
トピック
sam local invoke によるローカルテスト
注記
AWS SAM CLI を使用してローカルでテストを実行するには、Docker をインストールし、構成する必要があります。手順については、で使用する Docker のインストール AWS SAM CLI を参照してください。
以下の例では、イベントを渡して Lambda 関数をローカルでテストしています。
$
sam local invoke --hook-name terraform
hello_world_function
-eevents/event.json
-
このコマンドを使用する場合の詳細については、「sam local invoke を使用したテストの概要」を参照してください。
sam local start-api によるローカルテスト
Terraform で sam local start-api
を使用するには、以下を実行してください。
$
sam local start-api --hook-name terraform
以下に例を示します。
$
sam local start-api --hook-name terraform
Running Prepare Hook to prepare the current application Executing prepare hook of hook "terraform" Initializing Terraform application ... Creating terraform plan and getting JSON output .... Generating metadata file Unresolvable attributes discovered in project, run terraform apply to resolve them. Finished generating metadata file. Storing in... Prepare hook completed and metadata file generated at: ... Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET] Mounting None at http://127.0.0.1:3000/hello [POST] You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. If you used sam build before running local commands, you will need to re-run sam build for the changes to be picked up. You only need to restart SAM CLI if you update your AWS SAM template 2023-06-26 13:21:20 * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)
このコマンドの詳細については、「sam local start-api を使用したテストの概要」を参照してください。
Lambda オーソライザーを使用する Lambda 関数
Lambda オーソライザーを使用するよう設定された Lambda 関数の場合、 AWS SAM CLI は Lambda 関数エンドポイントを呼び出す前に Lambda オーソライザーを自動的に呼び出します。
-
のこの機能の詳細については AWS SAMCLI、「」を参照してくださいLambda オーソライザーを使用する Lambda 関数。
-
Terraform での Lambda オーソライザーの使用に関する詳細は、Terraform レジストリの「Resource: aws_api_gateway_authorizer
」を参照してください。
sam local start-lambda によるローカルテスト
以下は、 AWS Command Line Interface () を使用して Lambda 関数をローカルでテストする例ですAWS CLI。
-
AWS SAM CLI を使用してローカルテスト環境を作成します。
$
sam local start-lambda --hook-name terraform
hello_world_function
-
を使用して AWS CLI 、関数をローカルで呼び出します。
$
aws lambda invoke --function-name
hello_world_function
--endpoint-urlhttp://127.0.0.1:3001/ response.json --cli-binary-format raw-in-base64-out --payload file://events/event.json
このコマンドの詳細については、「を使用したテストの概要 sam local start-lambda」を参照してください。
Terraform の制限事項
Terraform と連携させた AWS SAM CLI を使用する場合の制限は次のとおりです。
-
複数のレイヤーにリンクされている Lambda 関数。
-
リソース間のリンクを定義する Terraform のローカル変数。
-
まだ作成されていない Lambda 関数の参照。これには、REST API リソースの本文属性で定義されている関数が含まれます。
プロジェクトに新しいリソースが追加されたときに terraform apply
を実行すると、このような制限を回避することができます。