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

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

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

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

  • 您需要向IAM角色或用户(统称为IAM实体)授予使用创建注释前和注释后 Lambda 函数的权限 AWS Lambda,并在创建标签任务时选择它们。

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

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

使用以下各节来学习如何创建IAM实体和授予上述权限。

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

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

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

使用 Lambda 控制台的策略

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

此外,如果您希望用户能够在 Lambda 控制台中使用访问和部署 Ground Truth 入门预注释和注释后函数,则必须指定 AWS Serverless Application Repository <aws-region> 您要在其中部署函数(这应该与用于创建标签任务的 AWS 区域相同),然后向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予使用 Amazon G SageMaker round Truth 控制台的权限,包括本节中描述的权限。自定义标注工作流权限

授予IAM执行角色调用 AWS 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 替换为 AWS 账户 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 替换为 AWS 账户 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 读取权限。Replace(替换) amzn-s3-demo-bucket 使用您在创建标注任务时指定的输出存储桶的名称。

{ "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 控制台中打开函数页面

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

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

  4. 选择角色名称,该角色的摘要页面将在IAM控制台的新选项卡中打开。

  5. 选择附加策略

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

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

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

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

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