

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

# Cross-account 访问用于自定义模型导入任务的 Amazon S3 存储桶
<a name="cross-account-access-cmi"></a>

如果您要从不同的 Amazon S3 存储桶中导入模型 AWS 账户，则在导入自定义模型之前，您需要授予访问该存储桶的权限。请参阅[导入自定义模型的先决条件](custom-model-import-prereq.md)。

**注意**  
如果自定义模型导入任务是通过 Amazon Bedrock 控制台提交的，则会自动创建默认的导入执行角色。您必须编辑默认的导入执行角色策略，并将为指定的账户 ID 替换为`aws:ResourceAccount`存储桶拥有者的 AWS 账户 ID。

## 配置对 Amazon S3 存储桶的跨账户访问
<a name="configure-cross-acct-access"></a>

按照以下步骤为自定义模型导入任务配置对 Amazon S3 存储桶的跨账户访问权限。

1. **创建导入执行角色** — 在用户 AWS 账户 （将运行导入任务的账户）中，创建一个 Amazon Bedrock 可以担任的 IAM 角色。有关为自定义模型导入创建服务角色的更多信息，请参阅[导入自定义模型的先决条件](custom-model-import-prereq.md)。

1. **创建存储桶策略**-在存储桶拥有者的账户中，创建存储桶策略，向用户账户中的导入执行角色授予访问权限。

   以下示例存储桶策略（由存储桶拥有者创建并应用到存储桶 `s3://amzn-s3-demo-bucket`）向存储桶拥有者账户 `123456789123` 中的用户授予访问权限。

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

****  

   ```
   { 
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "CrossAccountAccess",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::{{123456789012}}:role/{{ImportRole}}"
               },           
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
                   "arn:aws:s3:::{{amzn-s3-demo-bucket/*}}"
               ]
           }
       ]
   }
   ```

------

1. **创建导入执行角色策略**-在用户的导入执行角色中 AWS 账户，将允许访问跨账户存储桶的策略附加到导入执行角色。对于`aws:ResourceAccount`，请指定存储桶所有者的账户 ID AWS 账户。

   用户账户中的以下示例导入执行角色策略，向存储桶拥有者的账户 ID `111222333444555` 提供对 Amazon S3 存储桶 `s3://amzn-s3-demo-bucket` 的访问权限。

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

****  

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

------

## 配置对使用自定义加密的 Amazon S3 存储桶的跨账户访问权限 AWS KMS key
<a name="configure-cross-acct-access-kms"></a>

如果 Amazon S3 存储桶使用自定义 AWS Key Management Service (AWS KMS) 密钥加密，则需要执行其他步骤来授予导入执行角色解密密钥的权限。

1. **创建导入执行角色** — 在用户的导入执行角色中 AWS 账户，创建 Amazon Bedrock 可以担任的 IAM 角色。有关更多信息，请参阅 [导入自定义模型的先决条件](custom-model-import-prereq.md)。

1. **创建存储桶策略**-在存储桶拥有者的账户中，创建存储桶策略，向用户账户中的导入执行角色授予访问权限。

   以下示例存储桶策略（由存储桶拥有者创建并应用到存储桶 `s3://amzn-s3-demo-bucket`）向存储桶拥有者账户 `123456789123` 中的用户授予访问权限。

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

****  

   ```
   { 
      "Version":"2012-10-17",		 	 	 
      "Statement": [
       {
           "Sid": "CrossAccountAccess",
           "Effect": "Allow",
           "Principal": {
               "AWS": "arn:aws:iam::{{123456789012}}:role/{{ImportRole}}"
           },           
           "Action": [
               "s3:ListBucket",
               "s3:GetObject"
           ],
           "Resource": [
               "{{arn:aws:s3:::amzn-s3-demo-bucket}}",
               "{{arn:aws:s3:::amzn-s3-demo-bucket}}/*"
           ]
        }
      ]
   }
   ```

------

1. **更新 AWS KMS 密钥策略**-在存储桶拥有者的账户中，将以下语句添加到 AWS KMS 密钥策略中，以允许用户的导入执行角色解密对象。

   ```
   {
       "Sid": "Allow use of the key by the destination account",
       "Effect": "Allow",
       "Principal": {
           "AWS": "{{arn:aws:iam::123456789123:role/ImportRole}}"
       },
       "Action": [
           "kms:Decrypt",
           "kms:DescribeKey"
       ],
       "Resource": "*"
   }
   ```

1. **创建导入执行角色策略**-在用户的导入执行角色中 AWS 账户，将策略附加到允许访问跨账户存储桶和 AWS KMS 密钥的导入执行角色。对于`aws:ResourceAccount`，请指定存储桶所有者的账户 ID AWS 账户。

   以下示例导入执行角色策略提供对存储桶拥有者`s3://amzn-s3-demo-bucket`在账户中的 Amazon S3 存储桶的访问权限，`111222333444555`以及 AWS KMS key `arn:aws:kms:{{us-west-2:123456789098}}:key/{{111aa2bb-333c-4d44-5555-a111bb2c33dd}}`。

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

****  

   ```
   { 
       "Version":"2012-10-17",		 	 	 
      "Statement": [
         {
           "Effect": "Allow",
           "Action": [
               "s3:ListBucket",
               "s3:GetObject"
           ],
           "Resource": [
               "{{arn:aws:s3:::amzn-s3-demo-bucket}}",
               "{{arn:aws:s3:::amzn-s3-demo-bucket/*}}"
           ],
           "Condition": {
               "StringEquals": {
                   "aws:ResourceAccount": "{{123456789012}}"
               }
           }
        },
        {
         "Effect": "Allow",
         "Action": [
           "kms:Decrypt",
           "kms:DescribeKey"
         ],
         "Resource": "arn:aws:kms:{{us-west-2}}:{{123456789012}}:key/{{111aa2bb-333c-4d44-5555-a111bb2c33dd}}"
       }
     ]
    }
   ```

------