

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

# 使用 sam remote test-event 进行云测试简介
<a name="using-sam-cli-remote-test-event"></a>

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

要了解有关可共享测试事件的更多信息，请参阅*《AWS Lambda 开发人员指南》*中的[可共享测试事件](https://docs.aws.amazon.com/lambda/latest/dg/testing-functions.html#creating-shareable-events)。

**Topics**
+ [设置 AWS SAM CLI 以使用 sam remote test-event](#using-sam-cli-remote-test-event-setup)
+ [使用 sam remote test-event 命令](#using-sam-cli-remote-test-event-use)
+ [使用可共享测试事件](#using-sam-cli-remote-test-event-invoke)
+ [管理可共享测试事件](#using-sam-cli-remote-test-event-manage)

## 先决条件
<a name="using-sam-cli-remote-test-event-prerequisites"></a>

要使用 `sam remote test-event`，请完成以下操作安装 AWS SAM CLI：
+ [AWS SAM 先决条件](prerequisites.md).
+ [安装 AWS SAM CLI](install-sam-cli.md).

如果您已经 AWS SAM CLI安装了，我们建议您升级到该版本的最新 AWS SAMCLI版本。要了解更多信息，请参阅[升级 AWS SAM CLI](manage-sam-cli-versions.md#manage-sam-cli-versions-upgrade)。

我们建议您在使用 `sam remote test-event` 之前初步了解以下主题：
+ [配置 AWS SAM CLI](using-sam-cli-configure.md).
+ [在中创建您的应用程序 AWS SAM](using-sam-cli-init.md).
+ [搭建简介 AWS SAM](using-sam-cli-build.md).
+ [使用部署简介 AWS SAM](using-sam-cli-deploy.md).
+ [使用同步sam sync到的简介 AWS 云](using-sam-cli-sync.md).

## 设置 AWS SAM CLI 以使用 sam remote test-event
<a name="using-sam-cli-remote-test-event-setup"></a>

要使用该 AWS SAM CLI`sam remote test-event`命令，请完成以下设置步骤：

1. **配置 AWS SAM CLI为使用你的 AWS 账户** — Lambda 的可共享测试事件可以由用户访问和管理 Lambda 中的可共享测试事件。 AWS 账户要将配置 AWS SAM CLI为使用你的 AWS 账户，请参阅[配置 AWS SAM CLI](using-sam-cli-configure.md)。

1. **为可共享的测试事件配置权限** – 要访问和管理可共享的测试事件，您必须具有适当的权限。要了解更多信息，请参阅*《AWS Lambda 开发人员指南》*中的[可共享测试事件](https://docs.aws.amazon.com/lambda/latest/dg/testing-functions.html#creating-shareable-events)。

## 使用 sam remote test-event 命令
<a name="using-sam-cli-remote-test-event-use"></a>

该 AWS SAM CLI`sam remote test-event`命令提供以下子命令，您可以使用这些子命令来访问和管理可共享的测试事件：
+ `delete`— 从 Amazon EventBridge 架构注册表中删除可共享的测试事件。
+ `get`— 从 EventBridge 架构注册表中获取可共享的测试事件。
+ `list`— 列出 EventBridge 架构注册表中某个函数的现有可共享测试事件。
+ `put`— 将事件从本地文件保存到 EventBridge 架构注册表。

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

```
$ sam remote test-event --help
```

### 删除可共享测试事件
<a name="using-sam-cli-remote-test-event-use-delete"></a>

您可以使用 `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](sam-cli-command-reference-remote-test-event-delete.md)。您也可以从中运行以下命令 AWS SAM CLI：

```
$ sam remote test-event delete --help
```

### 获取可共享测试事件
<a name="using-sam-cli-remote-test-event-use-get"></a>

您可以使用`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](sam-cli-command-reference-remote-test-event-get.md)。您也可以从中运行以下命令 AWS SAM CLI：

```
$ sam remote test-event get --help
```

### 列出可共享测试事件
<a name="using-sam-cli-remote-test-event-use-list"></a>

您可以从架构注册表中列出特定 Lambda 函数的所有可共享测试事件。使用 `list` 子命令和以下操作：
+ 提供与事件关联的 Lambda 函数的可接受 ID。
+ 如果您要提供 Lambda 函数逻辑 ID，则还必须提供与 Lambda 函数关联的 CloudFormation 堆栈名称。

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

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

有关与 `list` 子命令配合使用的选项列表，请参见 [sam remote test-event list](sam-cli-command-reference-remote-test-event-list.md)。您也可以从中运行以下命令 AWS SAM CLI：

```
$ sam remote test-event list --help
```

### 保存可共享测试事件
<a name="using-sam-cli-remote-test-event-use-put"></a>

您可以将可共享的测试事件保存到 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](sam-cli-command-reference-remote-test-event-put.md)。您也可以从中运行以下命令 AWS SAM CLI：

```
$ sam remote test-event put --help
```

## 使用可共享测试事件
<a name="using-sam-cli-remote-test-event-invoke"></a>

使用可共享的测试事件通过命令在中 AWS 云 测试您的 Lambda 函数。`sam remote invoke`要了解更多信息，请参阅[将可共享的测试事件传递给云端的 Lambda 函数](using-sam-cli-remote-invoke.md#using-sam-cli-remote-invoke-shareable)。

## 管理可共享测试事件
<a name="using-sam-cli-remote-test-event-manage"></a>

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

### 获取可共享的测试事件，对其进行修改并使用
<a name="using-sam-cli-remote-test-event-manage-example1"></a>

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

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
   ```

1. **修改可共享的测试事件** – 使用您选择的文本编辑器修改可共享的测试事件。

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

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

### 获取可共享的测试事件，对其进行修改，上传并使用
<a name="using-sam-cli-remote-test-event-manage-example2"></a>

您可以从 EventBridge 架构注册表中获取可共享的测试事件，在本地对其进行修改，然后将其上传。然后，您可以将可共享的测试事件直接传递给 AWS 云中的 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
   ```

1. **修改可共享的测试事件** – 使用您选择的文本编辑器修改可共享的测试事件。

1. **上传可共享的测试事件**-使用`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
   ```

1. **将可共享的测试事件传递给 Lambda 函数** – 使用 `sam remote invoke` 命令将可共享的测试事件直接传递给 AWS 云中的 Lambda 函数：

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