

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

# 跨账户存储桶访问权限
<a name="S3-buckets-cross-account-access"></a>

RES 可以从其他 AWS 账户挂载存储桶，前提是这些存储桶具有适当的权限。在以下场景中，账户 A 中的 RES 环境想要在账户 B 中挂载 S3 存储桶。

**步骤 1：在部署 RES 的账户中创建 IAM 角色*（这将称为账户 A）*：**

1. 登录需要访问 S3 存储桶的 RES 账户（账户 A）的 AWS 管理控制台。

1. 打开 IAM 控制台：

   1. 导航到 IAM 控制面板。

   1. 在导航窗格中，选择**策略**。

1. 创建策略：

   1. 选择**创建策略**。

   1. 选择 **JSON** 选项卡。

   1. 粘贴以下 JSON 策略（`amzn-s3-demo-bucket`替换为账户 B 中的 S3 存储桶的名称）：

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "s3:GetObject",
                      "s3:PutObject",
                      "s3:ListBucket",
                      "s3:DeleteObject",
                      "s3:AbortMultipartUpload"
                  ],
                  "Resource": [
                      "arn:aws:s3:::amzn-s3-demo-bucket",
                      "arn:aws:s3:::amzn-s3-demo-bucket/*"
                  ]
              }
          ]
      }
      ```

------

   1. 选择**下一步**。

1. 查看并创建策略：

   1. 提供策略的名称（例如，AccessPolicy“S3”）。

   1. 添加可选描述以解释政策的目的。

   1. 查看策略并选择**创建策略**。

1. 打开 IAM 控制台：

   1. 导航到 IAM 控制面板。

   1. 在导航窗格中，选择**角色**。

1. 创建角色：

   1. 选择**创建角色**。

   1. 选择**自定义信任策略**作为可信实体的类型。

   1. 粘贴以下 JSON 策略（`111122223333`替换为账户 A 的实际账户 ID 和 `{RES_ENVIRONMENT_NAME}` RES 部署的环境名称）：

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/<ENVIRONMENT_NAME>-vdc-custom-credential-broker-lambda-role"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. 选择**下一步**。

1. 附加权限策略：

   1. 搜索并选择您之前创建的策略。

   1. 选择**下一步**。

1. 标记、查看和创建角色：

   1. 输入角色名称（例如，AccessRole“S3”）。

   1. 在 “步骤 3” 下，选择 “**添加标签**”，然后输入以下键和值：
      + 键：`res:Resource`
      + 值：`s3-bucket-iam-role`

   1. 查看角色并选择**创建角色**。

1. 在 RES 中使用 IAM 角色：

   1. 复制您创建的 IAM 角色 ARN。

   1. 登录 RES 控制台。

   1. 在左侧导航窗格中，选择 **S3 存储桶**。

   1. 选择**添加存储桶**，然后使用跨账户 S3 存储桶 ARN 填写表单。

   1. 选择 “**高级设置-可选**” 下拉列表。

   1. 在 IAM 角色 ARN 字段中输入角色 ARN。

   1. 选择 “**添加存储桶**”。

**步骤 2：修改账户 B 中的存储桶策略**

1. 登录账户 B 的 AWS 管理控制台

1. 打开 S3 控制台：

   1. 导航到 S3 控制面板。

   1. 选择您要授予访问权限的存储桶。

1. 编辑存储桶策略：

   1. 选择 “**权限**” 选项卡，然后选择 “**存储桶策略**”。

   1. 添加以下策略以授予账户 A 中的 IAM 角色访问存储桶的权限（*111122223333*替换为账户 A 的实际账户 ID 和 *amzn-s3-demo-bucket* S3 存储桶的名称）：

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/S3AccessRole"
                  },
                  "Action": [
                      "s3:GetObject",
                      "s3:PutObject",
                      "s3:ListBucket",
                      "s3:DeleteObject",
                      "s3:AbortMultipartUpload"
                  ],
                  "Resource": [
                      "arn:aws:s3:::amzn-s3-demo-bucket",
                      "arn:aws:s3:::amzn-s3-demo-bucket/*"
                  ]
              }
          ]
      }
      ```

------

   1. 选择**保存**。