设置跨账户访问 - Amazon EMR

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

设置跨账户访问

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

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

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

    1. 登录 AWS Management Console 并打开 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 控制台中 AWS 账户 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 作业。