sam local invoke - AWS Serverless Application Model

sam local invoke

此页面提供了 AWS Serverless Application Model 命令行界面 (AWS SAM CLI) sam local invoke 子命令的参考信息。

sam local invoke 子命令在本地启动 AWS Lambda 函数的一次性调用。

使用量

$ sam local invoke <arguments> <options>
注意

如果 AWS SAM 模板中定义了多个函数,请提供要调用的函数逻辑 ID。

参数

Resource ID

要调用的 Lambda 函数 的 ID。

此参数是可选的。如果应用程序包含单个 Lambda 函数,AWS SAM CLI 会调用该函数。如果应用程序包含多个函数,请提供要调用的函数的 ID。

有效值:资源的逻辑 ID 或资源 ARN。

选项

--add-host LIST

将主机名到 IP 地址的映射传递到 Docker 容器的主机文件。此参数可以传递多次。

示例:--add-host example.com:127.0.0.1

--beta-features | --no-beta-features

允许或拒绝测试版功能。

--config-env TEXT

在配置文件中指定要使用的默认参数值的环境名称。默认值为“default”。有关配置文件的详细信息,请参阅 AWS SAMCLI 配置文件

--config-file PATH

包含要使用的默认参数值的配置文件的路径和文件名。在项目目录的根目录中,默认值为“samconfig.toml”。有关配置文件的详细信息,请参阅 AWS SAMCLI 配置文件

--container-env-vars

(可选)在本地调试时,将环境变量传递到 Lambda 函数映像容器。

--container-host TEXT

本地模拟的 Lambda 容器的主机。默认值为 localhost。如果要在 macOS 上的 Docker 容器中运行 AWS SAM CLI,可以指定 host.docker.internal。如果要在 AWS SAM CLI 之外的其他主机上运行容器 ,可以指定远程主机的 IP 地址。

--container-host-interface TEXT

应与容器端口绑定的主机网络接口的 IP 地址。默认值为 127.0.0.1。使用 0.0.0.0 可绑定到所有接口。

--debug

启用调试日志记录,以打印 AWS SAM CLI 生成的调试消息并显示时间戳。

--debug-args TEXT

要传递给调试程序的其他参数。

--debug-port, -d TEXT

指定后,在调试模式下启动 Lambda 函数容器,并在本地主机上开放此端口。

--debugger-path TEXT

挂载到 Lambda 容器中的调试程序的主机路径。

--docker-network TEXT

Lambda Docker 容器应连接到的现有 Docker 网络的名称或 ID,以及默认桥接网络。如果未指定此项,Lambda 容器将仅连接到默认的桥接 Docker 网络。

--docker-volume-basedir, -v TEXT

AWS SAM 文件所在的基目录的位置。如果 Docker 在远程计算机上运行,则必须在 Docker 计算机上挂载 AWS SAM 文件所在的路径,并修改此值以匹配远程计算机。

--env-vars, -n PATH

包含 Lambda 函数环境变量值的 JSON 文件。有关环境变量文件的更多信息,请参阅环境变量文件

--event, -e PATH

包含调用 Lambda 函数时传递给该函数的事件数据的 JSON 文件。如果不指定此选项,则不会假设任何事件。要从 stdin 中输入 JSON,必须传递值 '-'。有关来自不同 AWS 服务的事件消息格式的详细信息,请参阅《AWS Lambda 开发人员指南》中的使用其他服务

--force-image-build

指定 AWS SAM CLI 是否应重建用于调用包含层的 Lambda 函数的映像。

--help

显示此消息并退出。

--hook-name TEXT

用于扩展 AWS SAM CLI 功能的钩子的名称。

可接受的值:terraform

--invoke-image TEXT

要用于本地函数调用的容器映像的 URI。默认情况下,AWS SAM 从 Amazon ECR Public(列在 AWS SAM 的映像存储库中)拉取容器映像。使用此选项可从其他位置提取映像。

例如 sam local invoke MyFunction --invoke-image amazon/aws-sam-cli-emulation-image-python3.8

--layer-cache-basedir DIRECTORY

指定模板使用的层下载到的基目录的位置。

--log-file, -l TEXT

运行时日志将被发送到的日志文件。

确保 AWS SAM CLI 始终挂载文件中存在的 symlinks,以进行构建或调用。这仅适用于顶级目录中的 symlinks(即直接位于函数根目录下的 symlinks)。默认情况下,symlinks 不会被挂载,但用于在 NodeJS 中实现 node_modulesbuild-in-source 所需的 symlinks 除外。

--no-event

使用空事件调用函数。

--no-memory-limit

在本地调用期间移除容器中的内存限制,即使在 AWS SAM 模板中配置了内存限制也是如此。

--parameter-overrides

包含编码为键值对的 CloudFormation 参数覆盖的字符串。使用与 AWS Command Line Interface (AWS CLI) 相同的格式。AWS SAM CLI 格式为显式密钥和值关键字,每个覆盖都用空格分隔。以下是两个示例:

  • --parameter-overrides ParameterKey=hello,ParameterValue=world

  • --parameter-overrides ParameterKey=hello,ParameterValue=world ParameterKey=example1,ParameterValue=example2 ParameterKey=apple,ParameterValue=banana

--profile TEXT

凭证文件中用于获取 AWS 凭证的特定配置文件。

--region TEXT

要部署到的 AWS Region。例如,us-east-1。

--runtime TEXT

使用指定的运行时在本地调用 Lambda 函数。这将覆盖 template.yml 文件中定义的运行时。这还让您可以在不修改原始函数配置的情况下,使用不同的运行时来测试 Lambda 函数。

--save-params

将您在命令行中提供的参数保存到 AWS SAM 配置文件中。

--shutdown

在调用完成后模拟关闭事件,以测试关闭行为的扩展处理。

--skip-prepare-infra

如果没有进行任何基础架构更改,则跳过准备阶段。使用 --hook-name 选项。

--skip-pull-image

默认情况下,AWS SAM CLI会检查 Lambda 最新的远程运行时环境,并自动更新本地映像以保持同步。

指定此选项可跳过为 Lambda 运行时环境下拉最新的 Docker 映像。

--template, -t PATH

AWS SAM 模板文件。

此选项与 --hook-name 不兼容。

注意

如果指定此选项,则 AWS SAM 只会加载模板及其指向的本地资源。

--terraform-plan-file

将 AWS SAM CLI 与 Terraform Cloud 配合使用时本地 Terraform 计划文件的相对路径或绝对路径。此选项要求将 --hook-name 设置为 terraform

示例

以下示例使用生成的事件进行本地测试,方法是使用 s3.json 事件在本地调用 Lambda 函数

$ sam local invoke --event events/s3.json S3JsonLoggerFunction

以下示例使用 Python 3.11 运行时来测试函数 HelloWorldFunction

$ sam local invoke --runtime python3.11 HelloWorldFunction