2016-11-10 93 views
1

我们以前曾使用COPY命令从没有特定策略的存储桶每天将文件从s3复制到Redshift。S3到Redshift:复制并拒绝访问

COPY schema.table_staging  
FROM 's3://our-bucket/X/YYYY/MM/DD/'  
CREDENTIALS 'aws_access_key_id=xxxxxx;aws_secret_access_key=xxxxxx'  
CSV  
GZIP  
DELIMITER AS '|'  
TIMEFORMAT 'YYYY-MM-DD HH24:MI:SS'; 

我们需要改善我们的S3存储的安全性,我们增加了一个政策,以授权从我们的VPC或特定IP地址(我们使用我们的红移集群的一个)连接要么。

{ 
"Version": "2012-10-17", 
"Id": "S3PolicyId1", 
"Statement": [ 
    { 
     "Sid": "DenyAllExcept", 
     "Effect": "Deny", 
     "Principal": "*", 
     "Action": "s3:*", 
     "Resource": [ 
      "arn:aws:s3:::our-bucket/*", 
      "arn:aws:s3:::our-bucket" 
     ], 
     "Condition": { 
      "StringNotEqualsIfExists": { 
       "aws:SourceVpc": "vpc-123456789" 
      }, 
      "NotIpAddressIfExists": { 
       "aws:SourceIp": [ 
        "12.35.56.78/32" 
       ] 
      } 
     } 
    } 
] 
} 

此策略适用于使用AWS CLI或boto Python库从EC2,EMR或我们的特定地址访问文件。

这里是我们对红移错误:

ERROR: S3ServiceException:Access Denied,Status 403,Error AccessDenied,Rid xxxxxx,CanRetry 1 
Détail : 
----------------------------------------------- 
error: S3ServiceException:Access Denied,Status 403,Error AccessDenied,Rid xxxxxx,CanRetry 1 
code:  8001 
context: Listing bucket=our-bucket prefix=X/YYYY/MM/DD/ 
query:  1587954 
location: s3_utility.cpp:552 
process: padbmaster [pid=21214] 
----------------------------------------------- 

提前,如果你能帮助我们在此非常感谢,

达明

PS:这个问题很相似,这one:Copying data from S3 to Redshift - Access denied

回答

1

您需要使用Redshift的“增强VPC路由”功能。从文档here

  1. 当您使用亚马逊的红移增强VPC路由,亚马逊红移强制所有副本,并卸载您的集群,并通过您的Amazon VPC您的数据存储库之间的通信。

  2. 如果没有启用增强的VPC路由,亚马逊红移流量路由通过互联网,包括交通到AWS网络内的其他服务。

  3. 对于流量在同一区域集群亚马逊S3存储,您可以创建一个VPC端点直接流引向桶。