

# 设置 Amazon S3 存储桶的访问权限
<a name="export-cluster-data.Setup"></a>

您标识 AmazonS3 桶，然后授予数据库集群导出任务访问它的权限。

**Topics**
+ [标识要导出到的 Amazon S3 存储桶](#export-cluster-data.SetupBucket)
+ [使用 IAM 角色提供对 Amazon S3 存储桶的访问权限](#export-cluster-data.SetupIAMRole)
+ [使用跨账户 Amazon S3 存储桶](#export-cluster-data.Setup.XAcctBucket)

## 标识要导出到的 Amazon S3 存储桶
<a name="export-cluster-data.SetupBucket"></a>

标识要将数据库集群数据导出到的 Amazon S3 桶。使用现有 S3 存储桶或创建新的 S3 存储桶。

**注意**  
S3 桶和数据库集群必须位于同一 AWS 区域中。

有关使用 Amazon S3 存储桶的详细信息，请参阅 *Amazon Simple Storage Service 用户指南*中的以下主题：
+ [如何查看 S3 存储桶的属性？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/view-bucket-properties.html)
+ [如何为 Amazon S3 存储桶启用默认加密？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/default-bucket-encryption.html)
+ [如何创建 S3 存储桶？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)

## 使用 IAM 角色提供对 Amazon S3 存储桶的访问权限
<a name="export-cluster-data.SetupIAMRole"></a>

将数据库集群数据导出到 Amazon S3 之前，请授予导出任务对 Amazon S3 桶的写入访问权限。

要授予此权限，请创建 IAM 策略以提供对桶的访问权限，然后创建一个 IAM 角色并将该策略附加到该角色。稍后，您可以将此 IAM 角色分配给数据库集群导出任务。

**重要**  
如果计划使用 AWS 管理控制台导出数据库集群，则可以选择在导出数据库集群时自动创建 IAM 策略和角色。有关说明，请参阅[创建数据库集群导出任务](export-cluster-data.Exporting.md)。

**授予任务访问 Amazon S3 的权限**

1. 创建一个 IAM 策略。此策略提供允许数据库集群导出任务访问 Amazon S3 的桶和对象权限。

   在策略中，包含以下必需操作，以允许将文件从 Amazon Aurora 桶传输到 S3 桶：
   + `s3:PutObject*`
   + `s3:GetObject*` 
   + `s3:ListBucket` 
   + `s3:DeleteObject*`
   +  `s3:GetBucketLocation`

   在策略中，包含以下资源以标识 S3 桶以及该桶中的对象。以下资源列表显示用于访问 Amazon S3 的 Amazon Resource Name (ARN) 格式。
   + `arn:aws:s3:::amzn-s3-demo-bucket`
   + `arn:aws:s3:::amzn-s3-demo-bucket/*`

   有关为 Amazon Aurora 创建 IAM 策略的更多信息，请参阅 [创建和使用适用于 IAM 数据库访问的 IAM 策略](UsingWithRDS.IAMDBAuth.IAMPolicy.md)。另请参阅 *IAM 用户指南*中的[教程：创建和附加您的第一个客户托管式策略](https://docs.aws.amazon.com//IAM/latest/UserGuide/tutorial_managed-policies.html)。

   以下 AWS CLI 命令使用这些选项创建一个名为 `ExportPolicy` 的 IAM 策略。该策略授予对名为 *amzn-s3-demo-bucket* 的存储桶的访问权限。
**注意**  
创建策略后，请记下策略的 ARN。在将策略附加到 IAM 角色时，您在后面的步骤中需要使用 ARN。

   ```
   aws iam create-policy  --policy-name ExportPolicy --policy-document '{
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ExportPolicy",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject*",
                   "s3:ListBucket",
                   "s3:GetObject*",
                   "s3:DeleteObject*",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket",
                   "arn:aws:s3:::amzn-s3-demo-bucket/*"
               ]
           }
       ]
   }'
   ```

1. 创建一个 IAM 角色，以便 Aurora 可以代入该 IAM 角色，代表您访问 Amazon S3 桶。有关更多信息，请参阅 *IAM 用户指南*中的[创建向 IAM 用户委派权限的角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)。

   以下示例说明了如何使用 AWS CLI 命令创建一个名为 `rds-s3-export-role` 的角色。

   ```
   aws iam create-role  --role-name rds-s3-export-role  --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "export.rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole"
          }
        ] 
      }'
   ```

1. 将您创建的 IAM 策略附加到您创建的 IAM 角色。

   以下 AWS CLI 命令将之前创建的策略附加到名为 `rds-s3-export-role` 的角色。将 `your-policy-arn` 替换为您在先前步骤中记下的策略 ARN。

   ```
   aws iam attach-role-policy  --policy-arn your-policy-arn  --role-name rds-s3-export-role
   ```

## 使用跨账户 Amazon S3 存储桶
<a name="export-cluster-data.Setup.XAcctBucket"></a>

您可以跨 AWS 账户使用 S3 桶。有关更多信息，请参阅 [使用跨账户 Amazon S3 存储桶](aurora-export-snapshot.Setup.md#aurora-export-snapshot.Setup.XAcctBucket)。