云测试简介 sam remote test-event - AWS Serverless Application Model

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

云测试简介 sam remote test-event

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

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

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

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

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

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

要使用该 AWS SAM CLIsam remote test-event命令,请完成以下设置步骤:

  1. 配置 AWS SAM CLI为使用您的 AWS 账户 — Lambda 的可共享测试事件可由用户访问和管理 Lambda 中的可共享测试事件。 AWS 账户要将配置 AWS SAM CLI为使用你的 AWS 账户,请参阅配置 AWS SAM CLI

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

使用 sam remote test-event 命令

该 AWS SAM CLIsam remote test-event命令提供以下子命令,您可以使用这些子命令来访问和管理可共享的测试事件:

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

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

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

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

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

$ sam remote test-event --help

删除可共享测试事件

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

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

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

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

以下是 示例:

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

有关与 delete 子命令配合使用的选项列表,请参见 sam remote test-event delete。您也可以从中运行以下命令 AWS SAM CLI:

$ sam remote test-event delete --help

获取可共享测试事件

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

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

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

  • 如果您要提供 Lambda 函数逻辑 ID,则还必须提供与 Lambda 函数关联的 AWS 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。您也可以从中运行以下命令 AWS SAM CLI:

$ sam remote test-event get --help

列出可共享测试事件

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

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

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

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

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

有关与 list 子命令配合使用的选项列表,请参见 sam remote test-event list。您也可以从中运行以下命令 AWS 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 架构注册表中存在同名的可共享测试事件,则 AWS SAM CLI不会将其覆盖。要覆盖,请向您的命令添加 --force 选项。

有关与 put 子命令配合使用的选项列表,请参见 sam remote test-event put。您也可以从中运行以下命令 AWS SAM CLI:

$ sam remote test-event put --help

使用可共享测试事件

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

管理可共享测试事件

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

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

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

  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 架构注册表中获取可共享的测试事件,在本地对其进行修改,然后将其上传。然后,您可以将可共享的测试事件直接传递给 AWS Cloud中的 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 命令将可共享的测试事件直接传递给 AWS Cloud中的 Lambda 函数:

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