我遇到过同样的问题。我尝试将 AmazonS3FullAccess 添加到我的 RDS 实例正在使用的 IAM 角色中……不高兴。
闲逛之后,我进入 RDS 控制台,进入集群。选择我的 Aurora 集群并单击管理 IAM 角色。它给了我一个下拉菜单,我选择了 IAM 角色(与各个实例使用的角色相同)。
一旦我这样做了,一切都很好,数据加载又快又好。
因此,(对我们而言)有 5 个步骤/组件:
1) 允许用户上传对象的 S3 存储桶和存储桶策略
{
"Version": "2012-10-17",
"Id": "Policy1453918146601",
"Statement": [
{
"Sid": "Stmt1453917898368",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<account id>:<user/group/role>/<IAM User/Group/Role>"
},
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::<bucket name>/*"
}
]
}
“委托人”将是任何 IAM 用户、组或角色将数据文件上传到存储桶,以便 RDS 实例可以导入数据。
2) IAM 政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1486490368000",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<bucket name>/*"
]
}
]
}
这对于策略生成器来说非常简单。
3) 创建 IAM 角色:
应为该角色分配上述 IAM 策略。如果您不打算将此策略用于其他角色,您也可以执行内联策略,但我喜欢有一个已定义策略的想法,如果我有需要,我可以稍后参考。
4) 配置一个参数组,您的集群/实例将使用该参数组将 aws_default_s3_role 值设置为上述 #3 中角色的 ARN。
5) 通过转到集群、选择您的集群、选择管理 IAM 角色并为您的数据库集群设置 IAM 角色来配置 Aurora 集群
至少对我来说,这些步骤就像一个魅力。
希望有帮助!