我们无法将文件从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;
(使用访问键):
从' //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)时,它返回"允许的权限"。
答案 0 :(得分:0)
在Redshift上启用“增强的VPC路由”。如果没有“增强的VPC路由”,您的Redshift流量将通过Internet传输,您的S3存储桶策略将拒绝访问。看这里: https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-enabling-cluster.html
答案 1 :(得分:0)
1检查铲斗的刻印。 根据文档:https://docs.aws.amazon.com/en_us/redshift/latest/dg/c_loading-encrypted-files.html COPY命令自动识别并加载使用SSE-S3和SSE-KMS加密的文件。
2检查公里数:您的按键规则|角色
3如果是EMR中的文件,请检查S3的安全配置。