设置跨账户访问 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

设置跨账户访问

要为 Amazon EMR Serverless 设置跨账户访问权限,请完成以下步骤。在示例中,AccountA 是您创建 Amazon EMR Serverless 应用程序的账户,AccountB 是您的 Amazon DynamoDB 所在的账户。

  1. AccountB 中创建 DynamoDB 表。有关更多信息,请参阅步骤 1:创建表

  2. AccountB 中创建一个可访问 DynamoDB 表的 Cross-Account-Role-B IAM 角色。

    1. 登录 Amazon Web Services 管理控制台 并打开 IAM 控制台,网址为https://console.aws.amazon.com/iam/

    2. 选择角色,然后创建一个名为 Cross-Account-Role-B 的新角色。有关如何创建 IAM 角色的更多信息,请参阅用户指南中的创建 IAM 角色

    3. 创建一个 IAM 策略,授予访问跨账户 DynamoDB 表的权限。然后将 IAM policy 附加到 Cross-Account-Role-B

      以下是授予对 DynamoDB 表 CrossAccountTable 的访问权限的策略。

    4. 编辑 Cross-Account-Role-B 角色的信任关系。

      要为角色配置信任关系,请在 IAM 控制台中为在步骤 2: 中创建的角色选择信任关系选项卡 Cross-Account-Role-B。

      选择编辑信任关系,然后添加以下策略文档。本文档允许 AccountA 中的 Job-Execution-Role-A 代入此 Cross-Account-Role-B 角色。

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::123456789012:role/Job-Execution-Role-A", "Sid": "AllowSTSAssumerole" } ] }
    5. 授予 AccountA 中的 Job-Execution-Role-A 代入 Cross-Account-Role-B- STS Assume role 权限。

      在的 IAM 控制台中 Amazon Web Services 账户 AccountA,选择Job-Execution-Role-A。添加以下 Job-Execution-Role-A 策略语句以便对 Cross-Account-Role-B 角色执行 AssumeRole 操作。

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::123456789012:role/Cross-Account-Role-B" ], "Sid": "AllowSTSAssumerole" } ] }
    6. 在核心站点分类中将 dynamodb.customAWSCredentialsProvider 属性的值设置为 com.amazonaws.emr.AssumeRoleAWSCredentialsProvider。使用 Cross-Account-Role-B 的 ARN 值设置环境变量 ASSUME_ROLE_CREDENTIALS_ROLE_ARN

  3. 使用 Job-Execution-Role-A 运行 Spark 或 Hive 作业。