

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 前注釈と後注釈の Lambda 関数をテストする
<a name="sms-custom-templates-step3-lambda-test"></a>

Lambda コンソールで、注釈前と注釈後の Lambda 関数をテストできます。Lambda を初めて使用する場合は、 AWS Lambda デベロッパーガイドのコンソールで *Lambda 関数を作成する*のチュートリアルを使用し、Lambda 関数をコンソールでテストまたは[呼び出す](https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html#gettingstarted-zip-function)方法を学習できます。このページのセクションを使用して、 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>

Ground Truth AWS Serverless Application Repository (SAR) レシピをデプロイしたときに作成された注釈前 Lambda 関数をテストするには、次の手順に従います。

**Ground Truth SAR レシピの注釈前 Lambda 関数をテストする**

1. Lambda コンソールの [**[Functions]** (関数) ページ](https://console.aws.amazon.com/lambda/home#/functions)を開きます。

1. Ground Truth SAR レシピからデプロイされた注釈前関数を選択します。この関数の名前は、`serverlessrepo-aws-sagema-GtRecipePreHumanTaskFunc-{{<id>}}` と同様の名前になります。

1. **[Code source]** (コードソース) セクションで、**[Test]** (テスト) の横にある矢印を選択します。

1. **[Configure test event]** (テストイベントを構成する) を選択します。

1. **[Create new test event]** (新しいテストイベントの作成) オプションを選択したままにします。

1. **[Event template]** (イベントテンプレート) で、**[SageMaker Ground Truth PreHumanTask]** を選択します。

1. テストに**イベント名**を付けます。

1. **[作成]** を選択します。

1. 再度 **Test** (テスト) の横にある矢印を選択すると、作成したテストが選択されて表示されます。これはイベント名のドットで識別できます。選択されていない場合は、選択します。

1. **[Test]** (テスト) を選択して、テストを実行します。

テストを実行した後、**[Execution results]** (実行結果) を表示できます。**[Function logs]** (関数ログ) に、次のような応答が表示されます。

```
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 コンソールの [**[Functions]** (関数) ページ](https://console.aws.amazon.com/lambda/home#/functions)を開きます。

1. Ground Truth SAR レシピからデプロイされた注釈後関数を選択します。この関数の名前は、`serverlessrepo-aws-sagema-GtRecipeAnnotationConsol-{{<id>}}` と同様の名前になります。

1. **[Code source]** (コードソース) セクションで、**[Test]** (テスト) の横にある矢印を選択します。

1. **[Configure test event]** (テストイベントを構成する) を選択します。

1. **[Create new test event]** (新しいテストイベントの作成) オプションを選択したままにします。

1. **[Event template]** (イベントテンプレート)で、**[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. 再度 **Test** (テスト) の横にある矢印を選択すると、作成したテストが選択されて表示されます。これはイベント名のドットで識別できます。選択されていない場合は、選択します。

1. **[Test]** (テスト) を選択して、テストを実行します。

テストの実行後、**[Function Logs]** (関数ログ) に「`-- Consolidated Output --`」セクションが表示されます。これには、`sample-annotations.json` に含まれるすべての注釈のリストが掲載されています。