我们无法将文件从S3复制到Redshift . 有问题的S3存储桶只允许从我们拥有Redshift集群的VPC进行访问 . 从公共S3存储桶复制没有问题 . 我们尝试了基于密钥和基于IAM角色的方法,但结果是相同的:我们继续通过S3获得403拒绝访问 . 知道我们缺少什么吗?谢谢 .
编辑:我们使用的查询:1 . (使用IAM角色):
copy redshift_table from 's3://bucket/file.csv.gz' credentials 'aws_iam_role=arn:aws:iam::123456789:role/redshift-copyunload' delimiter '|' gzip;
- (使用访问键):
从's3://bucket/file.csv.gz'凭证'复制redshift_table'aws_access_key_id = xxx; aws_secret_access_key = yyy'分隔符'|' gzip的;
IAM角色(第一个查询)和IAM用户(第二个查询)的S3策略是:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt123456789",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::bucket/*"
]
}
]
}
Bucket有一个策略拒绝从VPC以外的任何地方访问(红色群集在此VPC中):
{
"Version": "2012-10-17",
"Id": "VPCOnlyPolicy",
"Statement": [
{
"Sid": "Access-to-specific-VPC-only",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bucket/*",
"arn:aws:s3:::bucket"
],
"Condition": {
"StringNotEquals": {
"aws:sourceVpc": "vpc-123456"
}
}
}
]
}
从公共可访问的存储桶加载没有问题,如果我们删除此存储桶策略,我们可以毫无问题地复制数据 .
存储桶与红移群集位于同一区域 .
当我们通过策略模拟器运行IAM角色(redshift-copyunload)时,它返回“允许的权限” .
1 回答
在Redshift上启用"Enhanced VPC Routing" . 如果没有"Enhanced VPC Routing",您的Redshift流量将通过Internet传输,您的S3存储桶策略将拒绝访问 . 看这里:https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-enabling-cluster.html