

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 주석 전 및 주석 후 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)의 지침에 따라 레이블링 작업을 생성하는 데 사용되는 SageMaker AI 실행 역할을 수임하는 권한을 주석 후 Lambda 함수의 실행 역할에 부여해야 합니다. 주석 후 Lambda 함수는 SageMaker AI 실행 역할을 이용하여 S3의 주석 데이터 파일인 `sample-annotations.json`에 액세스합니다.



## 주석 전 Lambda 함수 테스트
<a name="sms-custom-templates-step3-lambda-test-pre-annotation"></a>

다음 절차에 따라 Ground Truth AWS Serverless Application Repository (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. **이벤트 템플릿**에서 **SageMaker Ground 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>

다음 절차에 따라 Ground Truth AWS Serverless Application Repository (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. **이벤트 템플릿**에서 **SageMaker Ground 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. **테스트**를 선택하여 테스트를 실행합니다.

테스트를 실행한 후에는 `sample-annotations.json`에 포함된 모든 주석의 목록을 포함하고 있는 **함수 로그**의 `-- Consolidated Output --` 섹션이 표시됩니다.