在 Ground Truth 中使用 Amazon Lambda 所需的权限 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 Ground Truth 中使用 Amazon Lambda 所需的权限

您可能需要配置以下部分或全部内容,才能在 Ground Truth 中创建和使用 Amazon Lambda。

  • 您需要授予 IAM 角色或用户(统称为 IAM 实体)相应权限,使其能够使用 Amazon Lambda 创建注释前和注释后 Lambda 函数,并在创建标注作业时选择这些函数。

  • 配置标注作业时指定的 IAM 执行角色需要调用注释前和注释后 Lambda 函数的权限。

  • 注释后 Lambda 函数可能需要获得访问 Amazon S3 的权限。

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

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

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

要为安全敏感型使用案例创建更精细的策略,请参阅《Amazon Lambda 开发人员指南》中的文档 Lambda 的基于身份的 IAM 策略,了解如何创建适合您的使用案例的 IAM 策略。

使用 Lambda 控制台的策略

如果要授予 IAM 实体使用 Lambda 控制台的权限,请参阅《Amazon Lambda 开发人员指南》中的使用 Lambda 控制台

此外,如果您希望用户能够使用 Lambda 控制台中的 Amazon Serverless Application Repository 访问和部署 Ground Truth 入门注释前和注释后函数,则必须指定要部署这些函数的 <aws-region>(这应该与用于创建标注作业的 Amazon 区域相同),并将以下策略添加到 IAM 角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "serverlessrepo:ListApplicationVersions", "serverlessrepo:GetApplication", "serverlessrepo:CreateCloudFormationTemplate" ], "Resource": "arn:aws:serverlessrepo:<aws-region>: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 权限中所述的权限,包括自定义标注工作流权限部分中所述权限。

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

如果将 IAM 托管策略 AmazonSageMakerGroundTruthExecution 添加到用于创建标注作业的 IAM 执行角色,则此角色有权在函数名称中使用以下字符串之一来列出和调用 Lambda 函数:GtRecipeSageMakerSagemakersagemakerLabelingFunction

如果注释前或注释后 Lambda 函数名称不包括上一段中的任何术语,或者您需要比 AmazonSageMakerGroundTruthExecution 托管策略中更细粒度的权限,您可以添加与下面类似的策略,以授予执行角色调用注释前和注释后函数的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:<region>:<account-id>:function:<pre-annotation-lambda-name>", "arn:aws:lambda:<region>:<account-id>:function:<post-annotation-lambda-name>" ] } ] }

授予注释后 Lambda 访问注释的权限

注释后 Lambda中所述,注释后 Lambda 请求包括注释数据在 Amazon S3 中的位置。此位置由 payload 对象中的 s3Uri 字符串标识。要处理传入的注释,即使是简单的传递函数,也需要为注释后 Lambda 执行角色分配必要的权限,以便从 Amazon S3 读取文件。

您可以通过多种方式配置 Lambda 以访问 Amazon S3 中的注释数据。两种常见的方法是:

  • 允许 Lambda 执行角色在注释后 Lambda 请求中代入在 roleArn 中标识的 SageMaker 执行角色。此 SageMaker 执行角色是用于创建标注作业的角色,可以访问存储注释数据的 Amazon S3 输出存储桶。

  • 授予 Lambda 执行角色直接访问 Amazon S3 输出存储桶的权限。

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

授予 Lambda 代入 SageMaker 执行角色的权限

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

  1. 附加以下 IAM 策略到 Lambda 函数的执行角色,以代入 Resource 中标识的 SageMaker 执行角色。将 222222222222 替换为 Amazon 账户 ID。将 sm-execution-role 替换为代入角色的名称。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::222222222222:role/sm-execution-role" } }
  2. 修改 SageMaker 执行角色的信任策略以包括以下 Statement。将 222222222222 替换为 Amazon 账户 ID。将 my-lambda-execution-role 替换为代入角色的名称。

    { "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 读取权限。将 DOC-EXAMPLE-BUCKET 替换为创建标注作业时指定的输出存储桶的名称。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

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

将 S3 读取权限添加到注释后 Lambda:
  1. 在 Lambda 控制台中打开函数页面

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

  3. 选择配置,然后选择权限

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

  5. 选择附加策略

  6. 请执行下列操作之一:

    • 搜索并选择 AmazonS3ReadOnlyAccess 以授予函数读取账户中所有存储桶和对象的权限。

    • 如果需要更细粒度的权限,请选择创建策略并使用上一节中的策略示例来创建策略。请注意,创建策略后必须导航回执行角色摘要页面。

  7. 如果使用了 AmazonS3ReadOnlyAccess 托管策略,请选择附加策略

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