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

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

使用 sam remote test-event

使用 Amazon Serverless Application Model 命令行界面 (Amazon SAM CLI) sam remote test-event 命令访问和管理 Amazon Lambda 函数的可共享测试事件。

要了解有关可共享测试事件的更多信息,请参阅《Amazon Lambda 开发人员指南》中的可共享测试事件

要使用 sam remote test-event,请完成以下操作安装 Amazon SAM CLI:

如果您已经安装 Amazon SAM CLI,我们建议升级到 Amazon SAM CLI 的最新版本。要了解更多信息,请参阅 升级 Amazon SAM CLI

我们建议您在使用 sam remote test-event 之前初步了解以下主题:

设置 Amazon SAM CLI 以使用 sam remote test-event

完成以下设置步骤以使用 Amazon SAM CLI sam remote test-event 命令:

  1. 配置 Amazon SAM CLI 以使用您的 Amazon Web Services 账户 – 同一 Amazon Web Services 账户 内的用户可以访问和管理 Lambda 中的可共享测试事件。要配置 Amazon SAM CLI 以使用您的 Amazon Web Services 账户,请参阅 配置 Amazon SAM CLI

  2. 为可共享的测试事件配置权限 – 要访问和管理可共享的测试事件,您必须具有适当的权限。要了解更多信息,请参阅《Amazon Lambda 开发人员指南》中的可共享测试事件

使用 sam remote test-event 命令

该 Amazon SAM CLI sam remote test-event 命令提供以下子命令,您可以使用它们来访问和管理可共享的测试事件:

  • delete – 从 Amazon EventBridge 架构注册表中删除可共享的测试事件。

  • get – 从 EventBridge 架构注册表中获取可共享的测试事件。

  • list – 从 EventBridge 架构注册表中列出某个函数的现有可共享测试事件。

  • put – 将事件从本地文件保存到 EventBridge 架构注册表。

要使用 Amazon SAM CLI 列出这些子命令,请运行以下命令:

$ sam remote test-event --help

删除可共享测试事件

您可以使用 delete 子命令以及以下操作来删除可共享的测试事件:

  • 提供要删除的可共享测试事件的名称。

  • 提供与事件关联的 Lambda 函数的可接受 ID。

  • 如果您要提供 Lambda 函数逻辑 ID,则还必须提供与 Lambda 函数关联的 Amazon CloudFormation 堆栈名称。

以下是示例:

$ sam remote test-event delete HelloWorldFunction --stack-name sam-app --name demo-event

有关与 delete 子命令配合使用的选项列表,请参见 sam remote test-event delete。您还可以从 Amazon SAM CLI 执行以下操作:

$ sam remote test-event delete --help

获取可共享测试事件

您可以使用 get 子命令和以下操作,从 EventBridge 架构注册表中获取可共享的测试事件:

  • 提供要获取的可共享测试事件的名称。

  • 提供与事件关联的 Lambda 函数的可接受 ID。

  • 如果您要提供 Lambda 函数逻辑 ID,则还必须提供与 Lambda 函数关联的 Amazon CloudFormation 堆栈名称。

以下是获取名为 demo-event 的可共享测试事件的示例,该事件与 sam-app 堆栈的 HelloWorldFunction Lambda 函数相关联。此命令会将事件打印到您的控制台。

$ sam remote test-event get HelloWorldFunction --stack-name sam-app --name demo-event

要获取可共享的测试事件并将其保存到本地计算机,请使用 --output-file 选项并提供文件路径和名称。以下是将 demo-event 作为 demo-event.json 保存于当前工作目录的示例:

$ sam remote test-event get HelloWorldFunction --stack-name sam-app --name demo-event --output-file demo-event.json

有关与 get 子命令配合使用的选项列表,请参见 sam remote test-event get。您还可以从 Amazon SAM CLI 执行以下操作:

$ sam remote test-event get --help

列出可共享测试事件

您可以从架构注册表中列出特定 Lambda 函数的所有可共享测试事件。使用 list 子命令和以下操作:

  • 提供与事件关联的 Lambda 函数的可接受 ID。

  • 如果您要提供 Lambda 函数逻辑 ID,则还必须提供与 Lambda 函数关联的 Amazon CloudFormation 堆栈名称。

以下是获取与 sam-app 堆栈的 HelloWorldFunction Lambda 函数关联的所有可共享测试事件列表的示例:

$ sam remote test-event list HelloWorldFunction --stack-name sam-app

有关与 list 子命令配合使用的选项列表,请参见 sam remote test-event list。您还可以从 Amazon SAM CLI 执行以下操作:

$ sam remote test-event list --help

保存可共享测试事件

您可以将可共享的测试事件保存到 EventBridge 架构注册表中。使用 put 子命令和以下操作:

  • 提供与可共享测试事件关联的 Lambda 函数的可接受的 ID。

  • 提供可共享测试事件的名称。

  • 为要上传的本地事件提供文件路径和名称。

以下是将本地 demo-event.json 事件另存为 demo-event 并将其与 sam-app 堆栈的 HelloWorldFunction Lambda 函数关联的示例:

$ sam remote test-event put HelloWorldFunction --stack-name sam-app --name demo-event --file demo-event.json

如果 EventBridge 架构注册表中存在同名的可共享测试事件,则 Amazon SAM CLI 不会将其覆盖。要覆盖,请向您的命令添加 --force 选项。

有关与 put 子命令配合使用的选项列表,请参见 sam remote test-event put。您还可以从 Amazon SAM CLI 执行以下操作:

$ sam remote test-event put --help

使用可共享测试事件

使用可共享的测试事件通过 sam remote invoke 命令在 Amazon Web Services 云 中测试 Lambda 函数。要了解更多信息,请参阅 将可共享的测试事件传递给云端的 Lambda 函数

管理可共享测试事件

本主题包含有关如何管理和使用可共享测试事件的示例。

获取可共享的测试事件,对其进行修改并使用

您可以从 EventBridge 架构注册表中获取可共享的测试事件,在本地对其进行修改,然后将本地测试事件与 Amazon Web Services 云 中的 Lambda 函数一起使用。以下是示例:

  1. 检索可共享的测试事件 – 使用 sam remote test-event get 子命令检索特定 Lambda 函数的可共享测试事件并将其保存在本地:

    $ sam remote test-event get HelloWorldFunction --stack-name sam-app --name demo-event --output-file demo-event.json
  2. 修改可共享的测试事件 – 使用您选择的文本编辑器修改可共享的测试事件。

  3. 使用可共享的测试事件 – 使用 sam remote invoke 命令并通过 --event-file 提供事件的文件路径和名称:

    $ sam remote invoke HelloWorldFunction --stack-name sam-app --event-file demo-event.json

获取可共享的测试事件,对其进行修改,上传并使用

您可以从 EventBridge 架构注册表中获取可共享的测试事件,在本地对其进行修改并上传。然后,您可以将可共享的测试事件直接传递给 Amazon Web Services 云 中的 Lambda 函数。以下是示例:

  1. 检索可共享的测试事件 – 使用 sam remote test-event get 子命令检索特定 Lambda 函数的可共享测试事件并将其保存在本地:

    $ sam remote test-event get HelloWorldFunction --stack-name sam-app --name demo-event --output-file demo-event.json
  2. 修改可共享的测试事件 – 使用您选择的文本编辑器修改可共享的测试事件。

  3. 上传可共享的测试事件 – 使用 sam remote test-event put 子命令将可共享的测试事件上传并保存到 EventBridge 架构注册表。在此示例中,我们使用 --force 选项来覆盖可共享测试的旧版本:

    $ sam remote test-event put HelloWorldFunction --stack-name sam-app --name demo-event --file demo-event.json --force
  4. 将可共享的测试事件传递给 Lambda 函数 – 使用 sam remote invoke 命令将可共享的测试事件直接传递给 Amazon Web Services 云 中的 Lambda 函数:

    $ sam remote invoke HelloWorldFunction --stack-name sam-app --test-event-name demo-event