使用 AWS SAM CLI 替换为 Terraform 用于本地调试和测试 - AWS Serverless Application Model

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 AWS SAM CLI 替换为 Terraform 用于本地调试和测试

本主题介绍如何使用支持的 AWS Serverless Application Model 命令行界面 (AWS SAM CLI) 用你的命令 Terraform 项目和 Terraform Cloud.

要提供反馈和提交功能请求,请创建一个 GitHub 问题

使用本地测试 sam local invoke

注意

要使用 AWS SAM CLI 要在本地进行测试,必须安装并配置 Docker。有关说明,请参阅 安装 Docker 以与 AWS SAM CLI

以下是通过传入事件进行 Lambda 函数本地测试的示例:

$ sam local invoke --hook-name terraform hello_world_function -e events/event.json -

要了解有关使用此命令的更多信息,请参阅 使用 sam local invoke 进行测试简介

使用本地测试 sam local start-api

sam local start-api搭配使用 Terraform,运行以下命令:

$ 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 ()AWS CLI在本地测试 Lambda 函数的示例:

  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 限制

以下是使用时的限制 AWS SAM CLI 替换为 Terraform:

  • 链接到多个层的 Lambda 函数。

  • Terraform 定义资源之间链接的局部变量。

  • 引用尚未创建的 Lambda 函数。这包括在RESTAPI资源的 body 属性中定义的函数。

为避免这些限制,您可以在添加新资源时运行 terraform apply