

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

# sam local invoke
<a name="sam-cli-command-reference-sam-local-invoke"></a>

本页提供 AWS Serverless Application Model 命令行界面 (AWS SAMCLI) `sam local invoke` 子命令的参考信息。
+ 有关简介 AWS SAMCLI，请参阅 [那是什么 AWS SAMCLI？](what-is-sam-overview.md#what-is-sam-cli)
+ 有关使用 AWS SAMCLI`sam local invoke`子命令的文档，请参阅[使用 sam local invoke 进行测试简介](using-sam-cli-local-invoke.md)。

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

**注意**  
不建议在不受信任的代码中使用 SAM CLI 的本地调用功能。要与本地环境完全隔离，请直接在 Lambda 服务中执行代码。

**注意**  
对于持久函数，`sam local invoke`支持具有自动检查点和重播功能的状态执行。容器在持久函数执行期间保持运行状态，以处理状态持久性和恢复。

## 用法
<a name="ref-sam-cli-local-invoke-usage"></a>

```
$ sam local invoke <arguments> <options>
```

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

## 参数
<a name="ref-sam-cli-local-invoke-args"></a>

**Resource ID**  <a name="ref-sam-cli-local-invoke-args-resource-id"></a>
要调用的 Lambda 函数 的 ID。  
此参数是可选的。如果您的应用程序包含单个 Lambda 函数，则 CL AWS SAM I 将调用该函数。如果应用程序包含多个函数，请提供要调用的函数的 ID。  
*有效值*：资源的逻辑 ID 或资源 ARN。

## 选项
<a name="ref-sam-cli-local-invoke-options"></a>

`--add-host LIST`  <a name="ref-sam-cli-local-invoke-options-add-host"></a>
将主机名到 IP 地址的映射传递到 Docker 容器的主机文件。此参数可以传递多次。  

**Example**  
示例：`--add-host example.com:127.0.0.1`

`--beta-features | --no-beta-features`  <a name="ref-sam-cli-local-invoke-options-beta-features"></a>
允许或拒绝测试版功能。

`--config-env TEXT`  <a name="ref-sam-cli-local-invoke-options-config-env"></a>
在配置文件中指定要使用的默认参数值的环境名称。默认值为“default”。有关配置文件的详细信息，请参阅 [AWS SAMCLI 配置文件](serverless-sam-cli-config.md)。

`--config-file PATH`  <a name="ref-sam-cli-local-invoke-options-config-file"></a>
包含要使用的默认参数值的配置文件的路径和文件名。在项目目录的根目录中，默认值为“`samconfig.toml`”。有关配置文件的详细信息，请参阅 [AWS SAMCLI 配置文件](serverless-sam-cli-config.md)。

`--container-env-vars`  <a name="ref-sam-cli-local-invoke-options-container-env-vars"></a>
（可选）在本地调试时，将环境变量传递到 Lambda 函数映像容器。

`--container-host TEXT`  <a name="ref-sam-cli-local-invoke-options-container-host"></a>
本地模拟的 Lambda 容器的主机。默认值为 `localhost`。如果要在 macOS 上的 Docker 容器中运行 AWS SAM CLI，可以指定 `host.docker.internal`。如果要在与之不同的主机上运行容器 AWS SAMCLI，则可以指定远程主机的 IP 地址。

`--container-host-interface TEXT`  <a name="ref-sam-cli-local-invoke-options-container-host-interface"></a>
应与容器端口绑定的主机网络接口的 IP 地址。默认值为 `127.0.0.1`。使用 `0.0.0.0` 可绑定到所有接口。

`--debug`  <a name="ref-sam-cli-local-invoke-options-debug"></a>
启用调试日志记录，以打印 AWS SAM CLI 生成的调试消息并显示时间戳。

`--debug-args TEXT`  <a name="ref-sam-cli-local-invoke-options-debug-args"></a>
要传递给调试程序的其他参数。

`--debug-port, -d TEXT`  <a name="ref-sam-cli-local-invoke-options-debug-port"></a>
指定后，在调试模式下启动 Lambda 函数容器，并在本地主机上开放此端口。

`--debugger-path TEXT`  <a name="ref-sam-cli-local-invoke-options-debugger-path"></a>
挂载到 Lambda 容器中的调试程序的主机路径。

`--docker-network TEXT`  <a name="ref-sam-cli-local-invoke-options-docker-network"></a>
Lambda Docker 容器应连接到的现有 Docker 网络的名称或 ID，以及默认桥接网络。如果未指定此项，Lambda 容器将仅连接到默认的桥接 Docker 网络。

`--docker-volume-basedir, -v TEXT`  <a name="ref-sam-cli-local-invoke-options-docker-volume-basedir"></a>
 AWS SAM 文件所在的基本目录的位置。如果 Docker 在远程计算机上运行，则必须在 Docker 计算机上挂载 AWS SAM 文件所在的路径，并修改此值以匹配远程计算机。

`--durable-execution-name TEXT`  <a name="ref-sam-cli-local-invoke-options-durable-execution-name"></a>
持久执行的名称（仅适用于持久函数）

`--env-vars, -n PATH`  <a name="ref-sam-cli-local-invoke-options-env-vars"></a>
包含 Lambda 函数环境变量值的 JSON 或`.env`文件。文件格式会自动检测。有关环境变量文件的更多信息，请参阅[环境变量文件](serverless-sam-cli-using-invoke.md#serverless-sam-cli-using-invoke-environment-file)。

`--event, -e PATH`  <a name="ref-sam-cli-local-invoke-options-event"></a>
包含调用 Lambda 函数时传递给该函数的事件数据的 JSON 文件。如果不指定此选项，则不会假设任何事件。要从 `stdin` 中输入 JSON，必须传递值 '-'。有关来自不同 AWS 服务的事件消息格式的详细信息，请参阅*《AWS Lambda 开发人员指南*》中的[使用其他服务](https://docs.aws.amazon.com/lambda/latest/dg/lambda-services.html)。

`--force-image-build`  <a name="ref-sam-cli-local-invoke-options-force-image-build"></a>
指定 AWS SAM CLI 是否应重建用于调用包含层的 Lambda 函数的映像。

`--help`  <a name="ref-sam-cli-local-invoke-options-help"></a>
显示此消息并退出。

`--hook-name TEXT`  <a name="ref-sam-cli-local-invoke-options-hook-name"></a>
用于扩展 AWS SAM CLI 功能的钩子的名称。  
可接受的值：`terraform`。

`--invoke-image TEXT`  <a name="ref-sam-cli-local-invoke-options-invoke-image"></a>
要用于本地函数调用的容器映像的 URI。默认情况下， AWS SAM 从 Amazon ECR Public（列在 [的图像存储库 AWS SAM](serverless-image-repositories.md)中）拉取容器映像。使用此选项可从其他位置提取映像。  
例如 `sam local invoke MyFunction --invoke-image amazon/aws-sam-cli-emulation-image-python3.8`。

`--layer-cache-basedir DIRECTORY`  <a name="ref-sam-cli-local-invoke-options-layer-cache-basedir"></a>
指定模板使用的层下载到的基目录的位置。

`--log-file, -l TEXT`  <a name="ref-sam-cli-local-invoke-options-log-file"></a>
运行时日志将被发送到的日志文件。

`--mount-symlinks`  <a name="ref-sam-cli-local-invoke-options-mount-symlinks"></a>
确保 AWS SAM CLI 始终挂载文件中存在的 symlinks，以进行构建或调用。这仅适用于顶级目录中的 symlinks（即直接位于函数根目录下的 symlinks）。默认情况下，symlinks 不会被挂载，但用于在 NodeJS 中实现 `node_modules` 的 `build-in-source` 所需的 symlinks 除外。

`--no-event`  <a name="ref-sam-cli-local-invoke-options-no-event"></a>
使用空事件调用函数。

`--no-memory-limit`  <a name="ref-sam-cli-local-invoke-options-no-memory-limit"></a>
即使在 AWS SAM 模板中配置了内存，也可以在本地调用期间移除容器中的内存限制。

`--parameter-overrides`  <a name="ref-sam-cli-local-invoke-options-parameter-overrides"></a>
包含编码为键值对的 CloudFormation 参数覆盖的字符串。使用与 AWS Command Line Interface (AWS CLI) 相同的格式。 AWS SAMCLI 格式为显式密钥和值关键字，每个覆盖都用空格分隔。以下是两个示例：  
+ `--parameter-overrides ParameterKey=hello,ParameterValue=world`
+ `--parameter-overrides ParameterKey=hello,ParameterValue=world ParameterKey=example1,ParameterValue=example2 ParameterKey=apple,ParameterValue=banana`

`--profile TEXT`  <a name="ref-sam-cli-local-invoke-options-profile"></a>
您的凭证文件中用于获取 AWS 凭证的特定个人资料。

`--region TEXT`  <a name="ref-sam-cli-local-invoke-options-region"></a>
要部署到的 AWS 区域。例如，us-east-1。

`--runtime TEXT`  <a name="ref-sam-cli-local-invoke-options-runtime"></a>
使用指定的运行时在本地调用 Lambda 函数。这将覆盖 `template.yml` 文件中定义的运行时。这还让您可以在不修改原始函数配置的情况下，使用不同的运行时来测试 Lambda 函数。

`--save-params`  <a name="ref-sam-cli-local-invoke-options-save-params"></a>
将您在命令行中提供的参数保存到 AWS SAM 配置文件中。

`--shutdown`  <a name="ref-sam-cli-local-invoke-options-shutdown"></a>
在调用完成后模拟关闭事件，以测试关闭行为的扩展处理。

`--skip-prepare-infra`  <a name="ref-sam-cli-local-invoke-options-skip-prepare-infra"></a>
如果没有进行任何基础架构更改，则跳过准备阶段。使用 `--hook-name` 选项。

`--skip-pull-image`  <a name="ref-sam-cli-local-invoke-options-skip-pull-image"></a>
默认情况下， AWS SAM CLI会检查 Lambda 最新的远程运行时环境，并自动更新本地映像以保持同步。  
指定此选项可跳过为 Lambda 运行时环境下拉最新的 Docker 映像。

`--template, -t PATH`  <a name="ref-sam-cli-local-invoke-options-template"></a>
 AWS SAM 模板文件。  
此选项与 `--hook-name` 不兼容。  
如果指定此选项，则仅 AWS SAM 加载模板及其指向的本地资源。

`--tenant-id TEXT`  <a name="ref-sam-cli-local-invoke-options-tenancyconfig"></a>
多租户 Lambda 函数的租户 ID。用于确保不同租户之间的计算隔离。在调用配置了租户隔离模式的函数时为必填项。

`--terraform-plan-file`  <a name="ref-sam-cli-local-invoke-options-terraform-plan-file"></a>
将 AWS SAM CLI 与 Terraform Cloud 配合使用时本地 Terraform 计划文件的相对路径或绝对路径。此选项要求将 `--hook-name` 设置为 `terraform`。

## 示例
<a name="sam-cli-command-reference-sam-local-invoke-examples"></a>

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

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

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

```
$ sam local invoke --runtime python3.11 HelloWorldFunction
```

以下示例` HelloWorldFunction`使用持久的执行名称测试该函数

```
$ sam local invoke HelloWorldFunction --durable-execution-name my-execution
```