在 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 实体)授予使用创建标注前和注释后 Lambda 函数的权限 Amazon Lambda,并在创建标签任务时选择它们。

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

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

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

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

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

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

使用 Lambda 控制台的策略

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

此外,如果您希望用户能够 Amazon Serverless Application Repository 在 Lambda 控制台中使用访问和部署 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 函数的权限,该实体必须具有授予 IAM 使用亚马逊 G SageMaker round Truth 控制台的权限中所述的权限,包括自定义标注工作流权限部分中所述权限。

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

如果您将 IAM 托管策略AmazonSageMakerGroundTruthExecution添加到用于创建标签任务的 IAM 执行角色,则该角色有权列出和调用函数名称中包含以下字符串之一的 Lambda 函数:GtRecipe、、、SageMakerSagemakersagemaker、或。LabelingFunction

如果注释前或注释后 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 函数的执行角色,并修改执行角色的信任关系以允许 Lambda 代入该 SageMaker 角色。

  1. 将以@@ 下 IAM 策略附加到您的 Lambda 函数的执行角色以代入中确定的 SageMaker 执行角色。Resource222222222222 替换为 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 执行角色摘要页面并附加刚创建的策略。