Terraform と連携させた AWS SAM CLI をローカルでのデバッグおよびテストに使用する方法 - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Terraform と連携させた AWS SAM CLI をローカルでのデバッグおよびテストに使用する方法

このトピックでは、サポートされている AWS Serverless Application Model コマンドラインインターフェイス (AWS SAMCLI) コマンドをTerraformプロジェクトおよび で使用する方法について説明しますTerraform Cloud。

フィードバックや機能に関する要望を送るには、GitHub Issue を作成してください。

sam local invoke によるローカルテスト

注記

AWS SAM CLI を使用してローカルでテストを実行するには、Docker をインストールし、構成する必要があります。手順については、「AWS SAM CLI で Docker を使用するためのインストール方法」を参照してください。

以下の例では、イベントを渡して Lambda 関数をローカルでテストしています。

$ sam local invoke --hook-name terraform hello_world_function -e events/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 オーソライザーを自動的に呼び出します。

sam local start-lambda によるローカルテスト

以下は、 AWS Command Line Interface () を使用して Lambda 関数をローカルでテストする例ですAWS CLI。

  1. AWS SAM CLI を使用してローカルテスト環境を作成します。

    $ sam local start-lambda --hook-name terraform hello_world_function
  2. を使用して AWS CLI 、関数をローカルで呼び出します。

    $ aws lambda invoke --function-name hello_world_function --endpoint-url http://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 関数の参照。これには、RESTAPIリソースの body 属性で定義されている関数が含まれます。

プロジェクトに新しいリソースが追加されたときに terraform apply を実行すると、このような制限を回避することができます。