

# 创建 IAM 策略以访问 Amazon S3 资源
<a name="AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy"></a>

Aurora 可以访问 Amazon S3 资源以加载数据，或者保存 Aurora 数据库集群中的数据。不过，您必须先创建 IAM 策略，提供允许 Aurora 访问 Amazon S3 的存储桶和对象权限。

下表列出了可代表您访问 Amazon S3 存储桶的 Aurora 功能，以及各个功能所需的最低存储桶和对象权限。


| 功能 | 存储桶权限 | 对象权限 | 
| --- | --- | --- | 
|  `LOAD DATA FROM S3`  |  `ListBucket`  |  `GetObject` `GetObjectVersion`  | 
| LOAD XML FROM S3 |  `ListBucket`  |  `GetObject` `GetObjectVersion`  | 
|  `SELECT INTO OUTFILE S3`  |  `ListBucket`  |  `AbortMultipartUpload` `DeleteObject` `GetObject` `ListMultipartUploadParts` `PutObject`  | 

以下策略可用于添加 Aurora 代表您访问 Amazon S3 存储桶时可能需要的权限。

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

****  

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

------

**注意**  
 确保添加 `Resource` 值对应的两个条目。Aurora 需要存储桶本身和存储桶内所有对象的权限。  
根据您的使用案例，您可能不需要在示例策略中添加所有权限。也可能需要其他权限。例如，如果 Amazon S3 存储桶已加密，则您需要添加 `kms:Decrypt` 权限。

您可以按照以下步骤创建一个 IAM 策略，以便为 Aurora 提供所需的最小权限以代表您访问 Amazon S3 存储桶。要允许 Aurora 访问所有 Amazon S3 存储桶，您可以跳过这些步骤并使用 `AmazonS3ReadOnlyAccess` 或 `AmazonS3FullAccess` 预定义 IAM 策略，而不是创建自己的策略。

**创建 IAM 策略来授予对您的 Amazon S3 资源的访问权限**

1. 打开 [IAM 管理控制台](https://console.aws.amazon.com/iam/home?#home)。

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

1. 选择 **Create policy (创建策略)**。

1. 在** Visual editor (可视化编辑器)** 选项卡上，选择 **Choose a service (选择服务)**，然后选择 **S3**。

1. 在 **Actions (操作)** 下面选择 **Expand all (全部展开)**，然后选择 IAM 策略所需的存储桶权限和对象权限。

   对象权限是 Amazon S3 中的对象操作的权限，需要为存储桶中的对象而不是存储桶本身授予这些权限。有关 Amazon S3 中的对象操作权限的更多信息，请参阅[对象操作的权限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-objects)。

1. 选择**资源**，然后为**存储桶**选择**添加 ARN**。

1. 在**添加 ARN**对话框中，提供有关资源的详细信息，然后选择**添加**。

   指定要允许访问的 Amazon S3 存储桶。例如，如果您希望支持 Aurora 访问名为 *amzn-s3-demo-bucket* 的 Amazon S3 存储桶，则将 Amazon 资源名称（ARN）的值设置为 `arn:aws:s3:::amzn-s3-demo-bucket`。

1. 如果列出了**对象**资源，请为**对象**选择**Add ARN (添加 ARN)**。

1. 在**添加 ARN**对话框中，提供有关资源的详细信息。

   对于 Amazon S3 存储桶，请指定要允许访问的 Amazon S3 存储桶。对于对象，您可以选择** Any (任意)**，以便为存储桶中的任何对象授予权限。
**注意**  
您可以将 **Amazon Resource Name (ARN)** 设置为更具体的 ARN 值，以允许 Aurora 仅访问 Amazon S3 存储桶中的特定文件或文件夹。有关如何为 Amazon S3 定义访问策略的更多信息，请参阅[管理您的 Amazon S3 资源的访问权限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)。

1. （可选）为 **bucket (存储桶)** 选择 **Add ARN (添加 ARN)** 以将另一个 Amazon S3 存储桶添加到策略中，然后为该存储桶重复前面的步骤。
**注意**  
您可以重复该操作，以便在希望 Aurora 访问的每个 Amazon S3 存储桶的策略中添加相应的存储桶权限语句。您也可以根据需要授予访问 Amazon S3 中所有存储桶和对象的权限。

1. 选择 **Review policy (查看策略)**。

1. 对于** Name (名称)**，请为您的 IAM 策略输入名称，例如 `AllowAuroraToExampleBucket`。在创建 IAM 角色与 Aurora 数据库集群关联时，需要使用此名称。您也可以添加可选的**描述**值。

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

1. 完成 [创建 IAM 角色以允许 Amazon Aurora 访问AWS服务](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md) 中的步骤。