

# 在控制台中测试 Lambda 函数
<a name="testing-functions"></a>

您可以在控制台中使用测试事件调用函数，从而测试 Lambda 函数。*测试事件*是函数的一个 JSON 输入。如果函数不需要输入，则事件可以是空文档 `({})`。

在控制台中运行测试时，Lambda 会使用测试事件同步调用您的函数。函数运行时系统将事件 JSON 转换为一个对象，并将该对象传递给代码的处理程序方法以进行处理。

**创建测试事件**  
您需要先创建一个私有或可共享的测试事件，然后才能在控制台中进行测试。

## 使用测试事件调用函数
<a name="invoke-with-event"></a>

**测试函数**

1. 打开 Lamba 控制台的[函数](https://console.aws.amazon.com/lambda/home#/functions)页面。

1. 选择要测试的函数的名称。

1. 选择**测试**选项卡。

1. 在**测试事件**下，选择**创建新事件**或**编辑已保存的事件**，然后选择要使用的已保存事件。

1. 可选：为事件 JSON 选择一个**模板**。

1. 选择**测试**。

1. 在 **Execution result**（执行结果）下，展开 **Details**（详细信息）以查看测试结果。

要在不保存测试事件的情况下调用函数，请在保存之前选择 **Test**（测试）。这将创建一个未保存的测试事件，Lambda 仅会在会话期间内保存该事件。

对于 Node.js、Python 和 Ruby 运行时，您还可以在**代码**选项卡上访问现有已保存和未保存的测试事件。使用**测试事件**部分来创建、编辑和运行测试。

## 创建私有测试事件
<a name="creating-private-events"></a>

私人测试事件仅供事件创建者使用，并且不需要额外的权限即可使用。每个函数最多可以创建和保存 10 个测试事件。

**创建私有测试事件**

1. 打开 Lamba 控制台的[函数](https://console.aws.amazon.com/lambda/home#/functions)页面。

1. 选择要测试的函数的名称。

1. 选择**测试**选项卡。

1. 在 **Test event**（测试事件）下执行以下操作：

   1. 选择一个 **Template**（模板）。

   1. 输入测试的 **Name**（名称）。

   1. 在文本输入框中，输入 JSON 测试事件。

   1. 在 **Event sharing settings**（事件共享设置）下，选择 **Private**（私有）。

1. 选择**保存更改**。

对于 Node.js、Python 和 Ruby 运行时，您还可以在**代码**选项卡上创建测试事件。使用**测试事件**部分来创建、编辑和运行测试。

## 创建可共享测试事件
<a name="creating-shareable-events"></a>

可共享测试事件是您可与同一 AWS 账户中的其他用户共享的测试事件。您可以编辑其他用户的可共享测试事件并使用这些测试事件调用您的函数。

Lambda 将可共享测试事件作为 Schema 保存在一个名为 `lambda-testevent-schemas` 的 [Amazon EventBridge（CloudWatch Events）Schema 注册表](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-schema-registry.html)中。由于 Lambda 利用此注册表来存储和调用您创建的可共享测试事件，因此我们建议您不要编辑此注册表或使用 `lambda-testevent-schemas` 名称创建注册表。

要查看、共享和编辑可共享测试事件，您必须拥有以下所有 [EventBridge（CloudWatch Events）Schema 注册表 API 操作](https://docs.aws.amazon.com/eventbridge/latest/schema-reference/operations.html)的权限：
+ [https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname.html#CreateRegistry](https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname.html#CreateRegistry)
+ [https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname-schemas-name-schemaname.html#CreateSchema](https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname-schemas-name-schemaname.html#CreateSchema)
+ [https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname-schemas-name-schemaname.html#DeleteSchema](https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname-schemas-name-schemaname.html#DeleteSchema)
+ [https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname-schemas-name-schemaname-version-schemaversion.html#DeleteSchemaVersion](https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname-schemas-name-schemaname-version-schemaversion.html#DeleteSchemaVersion)
+ [https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname.html#DescribeRegistry](https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname.html#DescribeRegistry)
+ [https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname-schemas-name-schemaname.html#DescribeSchema](https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname-schemas-name-schemaname.html#DescribeSchema)
+ [https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-discover.html#GetDiscoveredSchema](https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-discover.html#GetDiscoveredSchema)
+ [https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname-schemas-name-schemaname-versions.html#ListSchemaVersions](https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname-schemas-name-schemaname-versions.html#ListSchemaVersions)
+ [https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname-schemas-name-schemaname.html#UpdateSchema](https://docs.aws.amazon.com/eventbridge/latest/schema-reference/v1-registries-name-registryname-schemas-name-schemaname.html#UpdateSchema)

请注意，保存对可共享测试事件所做的编辑将覆盖该事件。

如果您无法创建、编辑或查看可共享测试事件，请检查您的账户是否具有这些操作所需的权限。如果您拥有所需的权限但仍然无法访问可共享测试事件，请检查任何[基于资源的策略](access-control-resource-based.md)，因为这些策略可能会限制对 EventBridge（CloudWatch Events）注册表的访问权限。

**创建可共享测试事件**

1. 打开 Lamba 控制台的[函数](https://console.aws.amazon.com/lambda/home#/functions)页面。

1. 选择要测试的函数的名称。

1. 选择**测试**选项卡。

1. 在 **Test event**（测试事件）下执行以下操作：

   1. 选择一个 **Template**（模板）。

   1. 输入测试的 **Name**（名称）。

   1. 在文本输入框中，输入 JSON 测试事件。

   1. 在 **Event sharing settings**（事件共享设置）下，选择 **Shareable**（可共享）。

1. 选择**保存更改**。

**通过 AWS Serverless Application Model 使用可共享的测试事件。**  
您可以使用 AWS SAM 调用可共享的测试事件。请参阅[《AWS Serverless Application Model 开发人员指南》](https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/using-sam-cli-remote-test-event.html)中的 [https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/using-sam-cli-remote-test-event.html](https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/using-sam-cli-remote-test-event.html)。

## 删除可共享测试事件 Schema
<a name="deleting-test-schemas"></a>

当您删除可共享测试事件时，Lambda 会将其从 `lambda-testevent-schemas` 注册表移除。如果您从注册表中移除了最后一个可共享测试事件，Lambda 将删除该注册表。

如果您删除了函数，Lambda 不会删除任何关联的可共享测试事件 Schema。您必须从 [EventBridge（CloudWatch Events）控制台](https://console.aws.amazon.com/events)手动清除这些资源。