

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

# Ground Truth AWS Lambda で使用するために必要なアクセス許可を追加する
<a name="sms-custom-templates-step3-lambda-permissions"></a>

Ground Truth で AWS Lambda を作成および使用するには、次の一部またはすべてを設定する必要があります。
+ を使用して注釈前および注釈後の Lambda 関数を作成し AWS Lambda、ラベル付けジョブの作成時にそれらを選択するためのアクセス許可を IAM ロールまたはユーザー (総称して IAM エンティティ) に付与する必要があります。
+ ラベル付けジョブが設定されたときに指定された IAM 実行ロールには、注釈前と注釈後の Lambda 関数を呼び出すためのアクセス許可が必要です。
+ 注釈後の Lambda 関数では、Amazon S3 にアクセスするためのアクセス許可が必要な場合があります。

以下のセクションでは、IAM エンティティを作成し、前述したアクセス許可を付与する方法について学習します。

**Topics**
+ [AWS Lambda 関数を作成および選択するアクセス許可を付与する](#sms-custom-templates-step3-postlambda-create-perms)
+ [AWS Lambda 関数を呼び出すアクセス許可を IAM 実行ロールに付与する](#sms-custom-templates-step3-postlambda-execution-role-perms)
+ [注釈にアクセスするための注釈後の Lambda アクセス許可を付与する](#sms-custom-templates-step3-postlambda-perms)

## AWS Lambda 関数を作成および選択するアクセス許可を付与する
<a name="sms-custom-templates-step3-postlambda-create-perms"></a>

注釈前および注釈後の Lambda 関数を開発するために詳細なアクセス許可を必要としない場合は、 AWS 管理ポリシーをユーザーまたはロール`AWSLambda_FullAccess`にアタッチできます。このポリシーは、すべての Lambda 機能を使用するための広範なアクセス許可と、Lambda がやり取りする他の AWS サービスでアクションを実行するためのアクセス許可を付与します。

セキュリティに敏感なユースケースのより詳細なポリシーを作成するには、「 AWS Lambda デベロッパーガイド」の[「Lambda のアイデンティティベースの](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html) IAM ポリシー」のドキュメントを参照して、ユースケースに合った IAM ポリシーを作成する方法を確認してください。

**Lambda コンソールを使用するポリシー**

Lambda コンソールを使用するアクセス許可を IAM エンティティに付与する場合は、「 AWS Lambda デベロッパーガイド」の[「Lambda コンソールの使用](https://docs.aws.amazon.com/lambda/latest/dg/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-console)」を参照してください。

さらに、ユーザーが AWS Serverless Application Repository Lambda コンソールの を使用して Ground Truth スターターの注釈前および注釈後の関数にアクセスしてデプロイできるようにするには、関数をデプロイ*`<aws-region>`*する を指定し (ラベル付けジョブの作成に使用した AWS リージョンと同じである必要があります）、次のポリシーを IAM ロールに追加する必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "serverlessrepo:ListApplicationVersions",
                "serverlessrepo:GetApplication",
                "serverlessrepo:CreateCloudFormationTemplate"
            ],
            "Resource": "arn:aws:serverlessrepo:us-east-1:838997950401:applications/aws-sagemaker-ground-truth-recipe"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "serverlessrepo:SearchApplications",
            "Resource": "*"
        }
    ]
}
```

------

**Ground Truth コンソールで Lambda 関数を表示するためのポリシー**

ユーザーがカスタムラベル付けジョブを作成しているときに、IAM エンティティに Ground Truth コンソールで Lambda 関数を表示するためのアクセス許可を付与するには、エンティティには、「[Amazon SageMaker Ground Truth コンソールを使用するための IAM アクセス許可を付与する](sms-security-permission-console-access.md)」で説明されているアクセス許可が必要です。これには、「[カスタムラベル付けワークフローのアクセス許可](sms-security-permission-console-access.md#sms-security-permissions-custom-workflow)」セクションで説明されているアクセス許可を含みます。

## AWS Lambda 関数を呼び出すアクセス許可を IAM 実行ロールに付与する
<a name="sms-custom-templates-step3-postlambda-execution-role-perms"></a>

IAM 管理ポリシー [AmazonSageMakerGroundTruthExecution](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerGroundTruthExecution) をラベル付けジョブの作成に使用される IAM 実行ロールに追加すると、このロールには、関数名に次の文字列のいずれかを含む Lambda 関数を一覧表示して呼び出すアクセス許可があります: `GtRecipe`、`SageMaker`、`Sagemaker`、`sagemaker`、または`LabelingFunction`。

注釈前または注釈後の Lambda 関数名に前の段落の用語のいずれかが含まれていない場合、または `AmazonSageMakerGroundTruthExecution` 管理ポリシーの用語よりも詳細なアクセス許可が必要な場合は、次のようなポリシーを追加して、注釈前と注釈後関数を呼び出すための実行ロールアクセス許可を追加できます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": [
                "arn:aws:lambda:us-east-1:111122223333:function:<pre-annotation-lambda-name>",
                "arn:aws:lambda:us-east-1:111122223333:function:<post-annotation-lambda-name>"
            ]
        }
    ]
}
```

------

## 注釈にアクセスするための注釈後の Lambda アクセス許可を付与する
<a name="sms-custom-templates-step3-postlambda-perms"></a>

[後注釈 Lambda](sms-custom-templates-step3-lambda-requirements.md#sms-custom-templates-step3-postlambda) で説明したように、注釈後 Lambda リクエストには、Amazon S3 内の注釈データの場所が含まれます。この場所は、`payload` オブジェクトの `s3Uri` 文字列で特定されます。注釈を取り込みながら処理するには、シンプルなパススルー関数の場合でも、注釈後の [Lambda 実行ロール](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)に必要なアクセス許可を割り当てて、Amazon S3 からファイルを読み取る必要があります。

Lambda を設定し、Amazon S3 の注釈データにアクセスするにはいくつかの方法があります。2 つの一般的な方法は次のとおりです。
+ Lambda 実行ロールが、注釈後 Lambda リクエストの `roleArn` で特定された SageMaker AI 実行ロールを引き受けることを許可します。この SageMaker AI 実行ロールは、ラベル付けジョブの作成に使用されるロールで、注釈データが格納されている Amazon S3 出力バケットにアクセスできます。
+ Lambda 実行ロールに、Amazon S3 出力バケットに直接アクセスするためのアクセス許可を付与します。

次のセクションでは、これらのオプションを設定する方法について説明します。

**SageMaker AI 実行ロールを引き受けるためのLambda 権限を付与する**

Lambda 関数が SageMaker AI 実行ロールを引き受けるようにするには、Lambda 関数の実行ロールにポリシーをアタッチし、SageMaker AI 実行ロールの信頼関係を変更して、Lambda がそれを引き受けられるようにする必要があります。

1. Lambda 関数の実行ロールに[次の IAM ポリシーをアタッチ](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)し、`Resource` で特定された SageMaker AI 実行ロールを引き受けます。`222222222222` を [AWS アカウント ID](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) に置き換えます。`sm-execution-role` を引き受けるロールの名前に置き換えます。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::222222222222:role/sm-execution-role"
       }
   }
   ```

------

1. SageMaker AI 実行ロールの[信頼ポリシーを変更](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy)し、以下の `Statement` を含めます。`222222222222` を [AWS アカウント ID](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) に置き換えます。`my-lambda-execution-role` を引き受けるロールの名前に置き換えます。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::222222222222:role/my-lambda-execution-role"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

**S3 へのアクセス権限を Lambda 実行ロールに付与する**

次のようなポリシーを注釈後の Lambda 関数の実行ロールに追加して、S3 読み取り権限を付与できます。*amzn-s3-demo-bucket* を、ラベル付けジョブの作成時に指定した出力バケットの名前に置き換えます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

------

Lambda コンソールで Lambda 実行ロールに S3 読み取りアクセス許可を追加するには、以下の手順を使用します。

**S3 読み取りアクセス許可を注釈後 Lambda に追加するには以下の手順に従います。**

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

1. 注釈後関数の名前を選択します。

1. **[設定]** を選択して、**[アクセス許可]** を選択します。

1. **[Role name]** (ロール名) を選択すると、IAM コンソールで新しいタブにそのロールの概要ページが開きます。

1. **[Attach policies]** (ポリシーをアタッチ) を選択します。

1. 次のいずれかを行います。
   + **`AmazonS3ReadOnlyAccess`** を検索して選択し、アカウント内のすべてのバケットとオブジェクトを読み取るアクセス許可を関数に付与します。
   + より詳細なアクセス許可が必要な場合は、**[Create policy]** (ポリシーの作成) をクリックし、前のセクションのポリシー例を使用してポリシーを作成します。ポリシーを作成したら、実行ロールの概要ページに戻る必要があります。

1. `AmazonS3ReadOnlyAccess` 管理ポリシーを使用した場合は、**[Attach policy]** (ポリシーのアタッチ)を選択します。

   新しいポリシーを作成した場合は、Lambda 実行ロールの概要ページに戻り、作成したポリシーをアタッチします。