sam 本地调用 - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

sam 本地调用

调用一次局部Amazon Lambda函数,并在调用完成后退出。

默认情况下,当您使用此命令时,Amazon SAMCLI 假定您当前的工作目录是项目的根目录。CAmazon SAM LI 首先尝试找到使用山姆·布莱德命令生成的模板文件,该文件位于.aws-sam子文件夹中,命名为template.yamltemplate.yml。接下来,Amazon SAMCLI 会尝试在当前工作目录template.yml中找到名为template.yaml或的模板文件。如果您指定该--template选项,Amazon SAMCLI 的默认行为将被覆盖,并将仅加载该Amazon SAM模板及其指向的本地资源。

要调用嵌套应用程序或堆栈的函数,您可以使用以下格式提供应用程序或堆栈逻辑 ID 以及函数逻辑 IDStackLogicalId/FunctionLogicalId

sam local invoke命令对于开发处理异步事件的无服务器函数非常有用,例如来自 Amazon Kinesiis 事件或 Simple Storage Service (Amazon S3) Amazon Kinesis。如果你想编写测试用例的脚本,它也很有用。您可以使用--event参数传递事件正文。有关事件的更多信息,请参阅Amazon Lambda开发者指南中的事件。有关来自不同Amazon服务的事件消息格式的详细信息,请参阅Amazon Lambda开发者指南中的使用其他服务

运行时输出(例如日志)输出到stderr,Lambda 函数结果输出到stdout

注意

如果您的Amazon SAM模板中定义了多个函数,则必须提供要调用的函数的。FUNCTION_LOGICAL_ID

用法:

sam local invoke [OPTIONS] [FUNCTION_LOGICAL_ID]

选项:

选项 描述
--hook-name TEXT

用于扩展Amazon SAM CLI 功能的挂接名称。

可接受的值:terraform.

--skip-prepare-infra 如果未对基础架构进行任何更改,则跳过准备阶段。与--hook-name选项一起使用。
-e, --event PATH 包含调用 Lambda 函数时传递给 Lambda 函数的事件数据的 JSON 文件。如果不指定此选项,则不假定任何事件。要从中输入 JSONstdin,必须传入值 '-'。有关来自不同Amazon服务的事件消息格式的详细信息,请参阅Amazon Lambda开发者指南中的使用其他服务
--no-event 使用空事件调用该函数。
-t, --template PATH Amazon SAM模板文件。

注意:如果指定此选项,则仅Amazon SAM加载模板及其指向的本地资源。此选项与不兼容--hook-name

-n, --env-vars PATH 包含 Lambda 函数环境变量值的 JSON 文件。有关环境变量文件的详细信息,请参阅环境变量文件
--parameter-overrides (可选)包含编码为键值对的Amazon CloudFormation参数覆盖的字符串。使用与Amazon Command Line Interface (Amazon CLI) 相同的格式。例如:'ParameterKey=KeyPairName、=、ParameterValueMyKeyParameterKey =InstanceTypeParameterValue =t1.micro'。此选项与不兼容--hook-name
-d, --debug-port TEXT 指定后,在调试模式下启动 Lambda 函数容器并在本地主机上公开此端口。
--debugger-path TEXT 安装到 Lambda 容器中的调试器的主机路径。
--debug-args TEXT 要传递给调试器的其他参数。
-v, --docker-volume-basedir TEXT Amazon SAM文件所在的基本目录的位置。如果 Docker 在远程计算机上运行,则必须在 Docker 计算机上安装Amazon SAM文件存在的路径,然后修改此值以匹配远程计算机。
--docker-network TEXT Lambda Docker 容器应连接的现有 Docker 网络的名称或 ID,以及默认的桥接网络。如果未指定,Lambda 容器将仅连接到默认的桥接 Docker 网络。
--container-env-vars (可选)在本地调试时,将环境变量传递给 Lambda 函数图像容器。
-l, --log-file TEXT 要向其发送运行时日志的日志文件。
--layer-cache-basedir DIRECTORY 指定将模板使用的图层下载到的基目录的位置。
--skip-pull-image

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

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

--beta-features | --no-beta-features 允许或拒绝测试版功能。
--force-image-build 指定Amazon SAM CLI 是否应重建用于通过层调用 Lambda 函数的镜像。
--invoke-image TEXT

要用于本地函数调用的容器镜像的 URI。默认情况下,从 Amazon ECRAmazon SAM Public ic 中提取。使用此选项从其他位置拉取镜像。

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

--profile TEXT 您的凭证文件中获取Amazon证书的特定配置文件。
--region TEXT 要部署到的Amazon区域。例如,us-east-1。
--config-file PATH 包含要使用的默认参数值的配置文件的路径和文件名。项目目录根目录中的默认值为samconfig.toml “”。有关配置文件的详细信息,请参阅 Amazon SAM CLI 配置文件
--config-env TEXT 环境名称,用于指定要使用的配置文件中的默认参数值。默认值为 “。有关配置文件的详细信息,请参阅 Amazon SAM CLI 配置文件
--shutdown 在调用完成后模拟关机事件,以测试扩展对关机行为的处理。
--container-host TEXT 本地仿真 Lambda 容器的主机。默认值为 localhost。如果你想在 macOS 上的 Docker 容器中运行Amazon SAM CLI,你可以指定host.docker.internal。如果要在与Amazon SAM CLI 不同的主机上运行容器,则可以指定远程主机的 IP 地址。
--container-host-interface TEXT 容器端口应绑定到的主机网络接口的 IP 地址。默认值为 127.0.0.1。用于绑定0.0.0.0到所有接口。
--debug 打开调试日志记录以打印Amazon SAM CLI 生成的调试消息并显示时间戳。
--help 显示此消息并退出。