2016-11-10 123 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端點直接流引向桶。