向 Redshift 集群授予对其他账户拥有的 S3 存储桶的访问权限



我正在尝试使用iam_role将数据从Redshift卸载到S3。只要我将数据卸载到与 Redshift 集群相同的账户拥有的 S3 存储桶,卸载命令就可以正常工作。

但是,如果我尝试将数据卸载到另一个账户拥有的 S3 存储桶中,则不起作用。我已经尝试了这些教程中提到的方法:

  • 教程:使用 IAM 角色委派跨 AWS 账户的访问权限
  • 示例:存储桶拥有者授予跨账户存储桶权限

但是,我总是S3ServiceException:Access Denied,Status 403,Error AccessDenied,Rid

以前有人这样做过吗?

我让它工作了。这是我所做的:

  • 在账户 A 中创建具有AmazonS3FullAccess策略的IAM 角色(用于测试(
  • 在账户 A 中启动了Amazon Redshift 集群
  • 将数据加载到红移集群中
  • 测试 1:卸载到账户 A 中的存储桶 -成功
  • 测试 2:卸载到账户 B 中的存储桶 -失败
  • 向账户 B 中的存储桶添加了存储桶策略(见下文(
  • 测试 3:卸载到账户 B 中的存储桶 -成功!

这是我使用的存储桶策略:

{
"Id": "Policy11",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PermitRoleAccess",
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:role/Redshift-loader"
]
}
}
]
}

Redshift-loader角色已与我的 Redshift 集群相关联。此策略授予角色(位于不同的 AWS 账户中(对此 S3 存储桶的访问权限。

我用access_key_id和secret_access_key解决了它,而不是iam_rol

最新更新