amazon-web-services - 如何在将数据从 S3 存储桶(使用 kms 密钥)复制到 Redshift 时删除访问被拒绝错误。(S3 存储桶在跨账户中)?
问题描述
我有两个帐户:Account A
和Account B
。
我正在尝试将跨账户 S3 存储桶(账户 B)中的数据加载到 Redshift 表(位于账户 A 中)。
copy employee
from 's3://test-data/sampledata1.csv'
region 'eu-west-1'
iam_role 'arn:aws:iam::446633115643:role/redshift-test'
delimiter ',';
我在账户 A 中启动的 Redshift 集群有一个单独的 VPC,没有公共访问权限。
我保存数据的 S3 存储桶使用 KMS 密钥加密。
我也更改了存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DelegateS3Access",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::446633115643:root"
},
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::test-data",
"arn:aws:s3:::test-data/*"
]
}
]
}
这种情况的输出应该是:数据必须加载到 Redshift 表中。但我面临这个错误:
无效操作:S3ServiceException:Access Denied,Status 403,Error AccessDenied
解决方案
推荐阅读
- node.js - 设置超时箭头函数
- ios - IOS/目标-C;在 if else 逻辑中使用 Return 语句来结束方法
- c# - 如何增加 ToolStripMenuItem 中 CheckBox 的大小?
- sql - PostgreSQL:SELECT INTO 正在更改字段的数据类型
- javascript - WOW.js 不支持 chrome 68.0.3440.106
- r - sum() 与 NA 的行为
- python - 如何在图像中的点周围画一个正方形
- rust - 如何从切片中复制最后一个元素
- apache - Apache HTTP 服务器 - .htaccess 版本控制
- android - Android Activity 生命周期处理