将数据从S3复制到Redshift - 拒绝访问

时间:2016-04-04 09:18:43

标签: amazon-s3 amazon-redshift

我们无法将文件从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;
  1. (使用访问键):

    从' //bucket/file.csv.gz'复制redshift_table;凭证' aws_access_key_id = xxx; aws_secret_access_key = yyy'分隔符' |' gzip的;

  2. 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)时,它返回"允许的权限"。

2 个答案:

答案 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的安全配置。