2016-06-07 34 views
0

有沒有辦法提供多個憑據或指定除Redshift COPY以外的路徑來加載JSONPaths文件?複製命令JSONPaths w/Multiple Credentials

在此示例中,我擁有對我的控制範圍外的存儲桶的只讀訪問權限someone_elses_bucket。紅移的文檔指出只有2個選項JSON是「自動」或S3路徑:

COPY example 
FROM 's3://someone_elses_bucket/data' 
CREDENTIALS 'aws_access_key_id=someone_elses_bucket_foo;aws_secret_access_key=someone_elses_bucket_bar' 
DATEFORMAT AS 'auto' 
TRUNCATECOLUMNS 
JSON 's3://my_bucket/redshift_json.json' GZIP; 

由於我沒有訪問someone_elses_bucket我不得不把JSONPaths文件在我的帳戶。但我得到S3ServiceException:Access Denied,Status 403,Error AccessDenied錯誤。我的存檔中的文件向公衆開放。要麼我做錯了什麼,或者COPY在另一個帳戶上使用我的IAM角色來限制我的訪問權限。在任何情況下,我都無法提供給JSONPaths文件,從而無法提取我的格式化數據。 auto不起作用。

這裏是我的就是我的桶的政策給訪問我的帳戶「someone_elses_bucket`(賬號替換這個例子):

{ 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Sid": "Example permissions", 
     "Effect": "Allow", 
     "Principal": { 
      "AWS": "arn:aws:iam::123456789:user/jerdak" 
     }, 
     "Action": [ 
      "s3:GetBucketLocation", 
      "s3:ListBucket" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::my_bucket" 
     ] 
    } 
] 
} 

回答

0

不,你不能在一個供應超過1個AWS憑據COPY命令。無論您提供什麼憑據,Redshift都會使用它來訪問JSONPaths文件和S3數據。我能想到的

選項:

  • 你通過IAM用戶訪問someone_elses_bucket?如果是,請爲該存儲桶提供對該IAM用戶的讀取訪問權限,並在COPY命令中使用其憑據。
  • 運行預處理步驟,使用您自己的AWS憑證將數據從someone_elses_bucket複製到您的,然後COPY
+0

我澄清了我的問題,我正在使用由'someone_elses_bucket'提供的憑據,另外我附加了設置帳戶訪問權限的策略。 (2)是一個選項,但我正在查看2TB的數據和非常短的轉身。 – Jerdak

+0

仍然,你的選擇保持不變 –

+0

有了選項(1)我仍然拒絕訪問,除非你的意思是使用不同的,更多配置的帳戶?我附加到我原來的問題的政策是使用我的只讀IAM帳戶。 – Jerdak