

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 新增與 Ground Truth AWS Lambda 搭配使用的必要許可
<a name="sms-custom-templates-step3-lambda-permissions"></a>

您可能需要設定以下部分或所有內容才能建立 AWS Lambda 並搭配使用 Ground Truth。
+ 您需要授予 IAM 角色或使用者 （統稱為 IAM 實體） 使用 建立註釋前和註釋後 Lambda 函數的許可 AWS Lambda，並在建立標籤任務時選擇它們。
+ 在設定標籤工作時指定的 IAM 執行角色需要權限才能調用註釋前與註釋後 Lambda 函式。
+ 註釋後 Lambda 函式可能需要權限才能存取 Amazon S3。

請參閱以下各節，了解如何建立 IAM 實體並授予上述權限。

**Topics**
+ [授予建立和選取 AWS Lambda 函數的許可](#sms-custom-templates-step3-postlambda-create-perms)
+ [授予 IAM 執行角色叫用 AWS Lambda 函數的許可](#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 的身分型 IAM 政策](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html)文件，了解如何建立適合您使用案例的 IAM 政策。

**使用 Lambda 主控台政策**

如果您想要授予 IAM 實體使用 Lambda 主控台的許可，請參閱《 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)。

此外，如果您希望使用者能夠在 Lambda 主控台 AWS Serverless Application Repository 中使用 存取和部署 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 函式，該實體必須具有[授予 IAM 許可以使用 Amazon SageMaker Ground Truth 主控台](sms-security-permission-console-access.md)所述的權限，包括[自訂標籤工作流程許可](sms-security-permission-console-access.md#sms-security-permissions-custom-workflow)一節所述的權限。

## 授予 IAM 執行角色叫用 AWS Lambda 函數的許可
<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 的註釋資料。兩種常見方法是：
+ 允許 Lambda 執行角色擔任 SageMaker AI 執行角色 (於註釋後 Lambda 請求的 `roleArn` 識別)。此 SageMaker AI 執行角色是用來建立標籤工作的角色，可存取儲存註釋資料的 Amazon S3 輸出儲存貯體。
+ 授予 Lambda 執行角色權限，以便直接存取 Amazon S3 輸出儲存貯體。

請參閱下列各節來了解如何設定這些選項。

**授予 Lambda 權限以便擔任 SageMaker AI 執行角色**

若要允許 Lambda 函式擔任 SageMaker AI 執行角色，您必須附加政策至 Lambda 函式的執行角色，並修改 SageMaker AI 執行角色的信任關係，以便允許 Lambda 擔任該角色。

1. [附加下列 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)至 Lambda 函式的執行角色，以便擔任 `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"
           }
       ]
   }
   ```

------

**授予 Lambda 執行角色權限以便存取 S3**

您可新增類似下列內容的政策至註釋後 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}}/*"
        }
    ]
}
```

------

若要新增 S3 讀取權限至 Lambda 主控台的 Lambda 執行角色，請採用下列程序。

**新增 S3 讀取權限至註釋後 Lambda：**

1. 開啟 Lambda 主控台的 [**Functions** (函式) 頁面](https://console.aws.amazon.com/lambda/home#/functions)。

1. 選擇註釋後函式的名稱。

1. 選擇 **Configuration** (組態)，然後選擇 **Permissions** (權限)。

1. 選取 **Role name** (角色名稱)，該角色的摘要頁面立即在 IAM 主控台的新索引標籤開啟。

1. 選取 **Attach policies** (附加政策)。

1. 執行以下任意一項：
   + 搜尋並選取 **`AmazonS3ReadOnlyAccess`**，以便授予函式權限來讀取帳戶的所有儲存貯體與物件。
   + 如您需要更精細的權限，請選取 **Create policy** (建立政策)，然後利用上一節的政策範例來建立政策。請注意，在建立政策之後，您必須導覽回執行角色摘要頁面。

1. 如您採用 `AmazonS3ReadOnlyAccess` 受管政策，請選取 **Attach policy** (附加政策)。

   如您已建立新政策，請導覽回 Lambda 執行角色摘要頁面，並附加您剛建立的政策。