

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

# 添加与 Ground Trut Amazon Lambda h 一起使用所需的权限


您可能需要配置以下部分或全部内容，才能在 Ground Truth 中创建和使用 Amazon Lambda 。
+ 您需要向 IAM 角色或用户（统称为 IAM 实体）授予使用创建标注前和注释后 Lambda 函数的权限 Amazon Lambda，并在创建标签任务时选择它们。
+ 配置标注作业时指定的 IAM 执行角色需要调用注释前和注释后 Lambda 函数的权限。
+ 注释后 Lambda 函数可能需要获得访问 Amazon S3 的权限。

使用以下部分了解如何创建 IAM 实体并授予上述权限。

**Topics**
+ [

## 授予创建和选择 Amazon Lambda 函数的权限
](#sms-custom-templates-step3-postlambda-create-perms)
+ [

## 授予 IAM 执行角色调用 Amazon Lambda 函数的权限
](#sms-custom-templates-step3-postlambda-execution-role-perms)
+ [

## 授予注释后 Lambda 访问注释的权限
](#sms-custom-templates-step3-postlambda-perms)

## 授予创建和选择 Amazon Lambda 函数的权限


如果您不需要精细权限来开发注释前和注释后的 Lambda 函数，则可以将托管`AWSLambda_FullAccess`策略附加 Amazon 到用户或角色。该策略授予使用所有 Lambda 功能的广泛权限，以及在 Lambda 与之交互的其他 Amazon 服务中执行操作的权限。

要为安全敏感的用例创建更精细的策略，请参阅 Amazon Lambda 开发人员指南中的文档中针对 [Lambda 的基于身份的 IAM 策略，了解如何创建适合](https://docs.amazonaws.cn/lambda/latest/dg/access-control-identity-based.html)您的用例的 IAM 策略。

**使用 Lambda 控制台的策略**

如果您想授予 IAM 实体使用 Lambda 控制台的权限，请参阅开发人员指南中的[使用 Lambda 控制台](https://docs.amazonaws.cn/lambda/latest/dg/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-console)。 Amazon Lambda 

此外，如果您希望用户能够 Amazon Serverless Application Repository 在 Lambda 控制台中使用访问和部署 Ground Truth 入门预注释和标注后函数，则必须指定要部署函数*`<aws-region>`*的位置（这应该与用于创建标签任务的 Amazon 区域相同），并将以下策略添加到 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 使用亚马逊 G SageMaker round Truth 控制台的权限](sms-security-permission-console-access.md)中所述的权限，包括[自定义标注工作流权限](sms-security-permission-console-access.md#sms-security-permissions-custom-workflow)部分中所述权限。

## 授予 IAM 执行角色调用 Amazon Lambda 函数的权限


如果您将 IAM 托管策略[AmazonSageMakerGroundTruthExecution](https://console.amazonaws.cn/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 访问注释的权限


如[注释后 Lambda](sms-custom-templates-step3-lambda-requirements.md#sms-custom-templates-step3-postlambda)中所述，注释后 Lambda 请求包括注释数据在 Amazon S3 中的位置。此位置由 `payload` 对象中的 `s3Uri` 字符串标识。要处理传入的注释，即使是简单的传递函数，也需要为注释后 [Lambda 执行角色](https://docs.amazonaws.cn/lambda/latest/dg/lambda-intro-execution-role.html)分配必要的权限，以便从 Amazon S3 读取文件。

您可以通过多种方式配置 Lambda 以访问 Amazon S3 中的注释数据。两种常见的方法是：
+ 允许 Lambda 执行角色担任注释后 Lambda 请求`roleArn`中标识的 SageMaker AI 执行角色。此 SageMaker AI 执行角色用于创建标签任务，并且可以访问存储注释数据的 Amazon S3 输出存储桶。
+ 授予 Lambda 执行角色直接访问 Amazon S3 输出存储桶的权限。

使用以下部分了解如何配置这些选项。

**向 Lambda 授予担任 SageMaker AI 执行角色的权限**

要允许 Lambda 函数担任 SageMaker AI 执行角色，您必须将策略附加到 Lambda 函数的执行角色，并修改 SageMaker AI 执行角色的信任关系以允许 Lambda 担任该角色。

1. 将以@@ [下 IAM 策略附加](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)到您的 Lambda 函数的执行角色，以代入中确定的 SageMaker AI 执行角色。`Resource`将 `222222222222` 替换为 [Amazon 账户 ID](https://docs.amazonaws.cn/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.amazonaws.cn/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy)以包括以下内容`Statement`。将 `222222222222` 替换为 [Amazon 账户 ID](https://docs.amazonaws.cn/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/*"
        }
    ]
}
```

------

要在 Lambda 控制台中为 Lambda 执行角色添加 S3 读取权限，请使用以下过程。

**将 S3 读取权限添加到注释后 Lambda：**

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

1. 选择注释后函数的名称。

1. 选择**配置**，然后选择**权限**。

1. 选择**角色名称**，该角色的摘要页面就会在 IAM 控制台的新标签页中打开。

1. 选择**附加策略**。

1. 请执行以下操作之一：
   + 搜索并选择 **`AmazonS3ReadOnlyAccess`** 以授予函数读取账户中所有存储桶和对象的权限。
   + 如果需要更细粒度的权限，请选择**创建策略**并使用上一节中的策略示例来创建策略。请注意，创建策略后必须导航回执行角色摘要页面。

1. 如果使用了 `AmazonS3ReadOnlyAccess` 托管策略，请选择**附加策略**。

   如果您创建了新策略，请导航回 Lambda 执行角色摘要页面并附加刚创建的策略。