

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

# 测试注释前和注释后 Lambda 函数
<a name="sms-custom-templates-step3-lambda-test"></a>

您可以在 Lambda 控制台中测试注释前和注释后 Lambda 函数。如果您是 Lambda 的新用户，可以使用《 AWS Lambda 开发人员指南》中的[使用控制台创建 Lambda 函数](https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html#gettingstarted-zip-function)教程，了解如何在控制台中测试或*调用*您的 Lambda 函数。您可以使用本页上的章节来学习如何测试通过 AWS Serverless Application Repository (SAR) 提供的 Ground Truth 注释前和注释后模板。

**Topics**
+ [先决条件](#sms-custom-templates-step3-lambda-test-pre)
+ [测试注释前 Lambda 函数](#sms-custom-templates-step3-lambda-test-pre-annotation)
+ [测试注释后 Lambda 函数](#sms-custom-templates-step3-lambda-test-post-annotation)

## 先决条件
<a name="sms-custom-templates-step3-lambda-test-pre"></a>

您必须执行以下操作才能使用本页上描述的测试。
+ 您需要访问 Lambda 控制台，还需要创建和调用 Lambda 函数的权限。要了解如何设置这些权限，请参阅[授予创建和选择 AWS Lambda 函数的权限](sms-custom-templates-step3-lambda-permissions.md#sms-custom-templates-step3-postlambda-create-perms)。
+ 如果您尚未部署 Ground Truth SAR 配方，请使用[使用 Ground Truth 模板创建 Lambda 函数](sms-custom-templates-step3-lambda-create.md)中的步骤进行部署。
+ 要测试注释后 Lambda 函数，您必须在 Amazon S3 中拥有一个包含示例注释数据的数据文件。对于简单的测试，您可以将以下代码复制并粘贴到一个文件中，将此文件另存为 `sample-annotations.json` 并[将此文件上传到 Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)。请注意此文件的 S3 URI，您需要此信息来配置注释后 Lambda 测试。

  ```
  [{"datasetObjectId":"0","dataObject":{"content":"To train a machine learning model, you need a large, high-quality, labeled dataset. Ground Truth helps you build high-quality training datasets for your machine learning models."},"annotations":[{"workerId":"private.us-west-2.0123456789","annotationData":{"content":"{\"crowd-entity-annotation\":{\"entities\":[{\"endOffset\":8,\"label\":\"verb\",\"startOffset\":3},{\"endOffset\":27,\"label\":\"adjective\",\"startOffset\":11},{\"endOffset\":33,\"label\":\"object\",\"startOffset\":28},{\"endOffset\":51,\"label\":\"adjective\",\"startOffset\":46},{\"endOffset\":65,\"label\":\"adjective\",\"startOffset\":53},{\"endOffset\":74,\"label\":\"adjective\",\"startOffset\":67},{\"endOffset\":82,\"label\":\"adjective\",\"startOffset\":75},{\"endOffset\":102,\"label\":\"verb\",\"startOffset\":97},{\"endOffset\":112,\"label\":\"verb\",\"startOffset\":107},{\"endOffset\":125,\"label\":\"adjective\",\"startOffset\":113},{\"endOffset\":134,\"label\":\"adjective\",\"startOffset\":126},{\"endOffset\":143,\"label\":\"object\",\"startOffset\":135},{\"endOffset\":169,\"label\":\"adjective\",\"startOffset\":153},{\"endOffset\":176,\"label\":\"object\",\"startOffset\":170}]}}"}}]},{"datasetObjectId":"1","dataObject":{"content":"Sift 3 cups of flour into the bowl."},"annotations":[{"workerId":"private.us-west-2.0123456789","annotationData":{"content":"{\"crowd-entity-annotation\":{\"entities\":[{\"endOffset\":4,\"label\":\"verb\",\"startOffset\":0},{\"endOffset\":6,\"label\":\"number\",\"startOffset\":5},{\"endOffset\":20,\"label\":\"object\",\"startOffset\":15},{\"endOffset\":34,\"label\":\"object\",\"startOffset\":30}]}}"}}]},{"datasetObjectId":"2","dataObject":{"content":"Jen purchased 10 shares of the stock on Janurary 1st, 2020."},"annotations":[{"workerId":"private.us-west-2.0123456789","annotationData":{"content":"{\"crowd-entity-annotation\":{\"entities\":[{\"endOffset\":3,\"label\":\"person\",\"startOffset\":0},{\"endOffset\":13,\"label\":\"verb\",\"startOffset\":4},{\"endOffset\":16,\"label\":\"number\",\"startOffset\":14},{\"endOffset\":58,\"label\":\"date\",\"startOffset\":40}]}}"}}]},{"datasetObjectId":"3","dataObject":{"content":"The narrative was interesting, however the character development was weak."},"annotations":[{"workerId":"private.us-west-2.0123456789","annotationData":{"content":"{\"crowd-entity-annotation\":{\"entities\":[{\"endOffset\":29,\"label\":\"adjective\",\"startOffset\":18},{\"endOffset\":73,\"label\":\"adjective\",\"startOffset\":69}]}}"}}]}]
  ```
+ 您必须使用中的[授予注释后 Lambda 访问注释的权限](sms-custom-templates-step3-lambda-permissions.md#sms-custom-templates-step3-postlambda-perms)说明向注释后 Lambda 函数的执行角色授予权限，以代 SageMaker 入您用于创建标签任务的 AI 执行角色。注释后 Lambda 函数使用 SageMaker AI 执行角色来访问 S3 中的注解数据文件`sample-annotations.json`。



## 测试注释前 Lambda 函数
<a name="sms-custom-templates-step3-lambda-test-pre-annotation"></a>

使用以下过程来测试在部署 Gro AWS Serverless Application Repository und Truth (SAR) 配方时创建的预注解 Lambda 函数。

**测试 Ground Truth SAR 配方注释前 Lambda 函数**

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

1. 选择从 Ground Truth SAR 配方中部署的注释前函数。此函数的名称类似于 `serverlessrepo-aws-sagema-GtRecipePreHumanTaskFunc-{{<id>}}`。

1. 在**代码来源**部分中，选择**测试**旁边的箭头。

1. 选择**配置测试事件**。

1. 保持选中**创建新测试事件**选项。

1. 在**事件模板**下，选择 G **SageMakerround Truth PreHumanTask**。

1. 为您的测试指定**事件名称**。

1. 选择**创建**。

1. 再次选择**测试**旁边的箭头，您应该会看到您创建的测试已选中，在事件名称旁用点表示。如果未选中，请选择该测试。

1. 选择**测试**来运行测试。

运行测试后，您可以看到**执行结果**。在**函数日志**中，您应该会看到类似于以下内容的响应：

```
START RequestId: cd117d38-8365-4e1a-bffb-0dcd631a878f Version: $LATEST
Received event: {
  "version": "2018-10-16",
  "labelingJobArn": "arn:aws:sagemaker:us-east-2:123456789012:labeling-job/example-job",
  "dataObject": {
    "source-ref": "s3://sagemakerexample/object_to_annotate.jpg"
  }
}
{'taskInput': {'taskObject': 's3://sagemakerexample/object_to_annotate.jpg'}, 'isHumanAnnotationRequired': 'true'}
END RequestId: cd117d38-8365-4e1a-bffb-0dcd631a878f
REPORT RequestId: cd117d38-8365-4e1a-bffb-0dcd631a878f	Duration: 0.42 ms	Billed Duration: 1 ms	Memory Size: 128 MB	Max Memory Used: 43 MB
```

在此响应中，我们可以看到 Lambda 函数的输出与所需的注释前响应语法匹配：

```
{'taskInput': {'taskObject': 's3://sagemakerexample/object_to_annotate.jpg'}, 'isHumanAnnotationRequired': 'true'}
```

## 测试注释后 Lambda 函数
<a name="sms-custom-templates-step3-lambda-test-post-annotation"></a>

使用以下过程来测试在部署 Gro AWS Serverless Application Repository und Truth (SAR) 配方时创建的注释后 Lambda 函数。

**测试 Ground Truth SAR 配方注释后 Lambda**

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

1. 选择从 Ground Truth SAR 配方中部署的注释后函数。此函数的名称类似于 `serverlessrepo-aws-sagema-GtRecipeAnnotationConsol-{{<id>}}`。

1. 在**代码来源**部分中，选择**测试**旁边的箭头。

1. 选择**配置测试事件**。

1. 保持选中**创建新测试事件**选项。

1. 在**事件模板**下，选择 G **SageMakerround Truth AnnotationConsolidation**。

1. 为您的测试指定**事件名称**。

1. 对提供的模板代码进行如下修改：
   + 将中的 `roleArn` Amazon 资源名称 (ARN) 替换为您用于创建标签任务的 SageMaker AI 执行角色的 ARN。
   + 将 `s3Uri` 中的 S3 URI 替换为添加到 Amazon S3 的 `sample-annotations.json` 文件的 URI。

   进行这些修改后，您的测试应类似于以下内容：

   ```
   {
     "version": "2018-10-16",
     "labelingJobArn": "arn:aws:sagemaker:us-east-2:123456789012:labeling-job/example-job",
     "labelAttributeName": "example-attribute",
     "roleArn": "arn:aws:iam::{{222222222222}}:role/{{sm-execution-role}}",
     "payload": {
       "s3Uri": "s3://{{your-bucket}}/sample-annotations.json"
     }
   }
   ```

1. 选择**创建**。

1. 再次选择**测试**旁边的箭头，您应该会看到您创建的测试已选中，在事件名称旁用点表示。如果未选中，请选择该测试。

1. 选择**测试**来运行测试。

运行测试后，您应该会在**函数日志**中看到 `-- Consolidated Output --` 部分，其中包含 `sample-annotations.json` 中包括的所有注释的列表。