2017-08-03 42 views
0

我正嘗試使用iam_role將數據從Redshift卸載到S3。只要我將數據卸載到與Redshift集羣相同的帳戶所擁有的S3存儲桶中,unload命令就可以正常工作。給Redshift集羣訪問另一個帳戶所擁有的S3存儲區

但是,如果我嘗試將數據卸載到另一個帳戶所擁有的S3存儲桶中,則不起作用。我曾嘗試在這些教程中提到的方法:

不過,我總是得到S3ServiceException:Access Denied,Status 403,Error AccessDenied,Rid

有沒有人這樣做呢?

回答

1

我得到它的工作。這裏就是我所做的:

  • 創建一個IAM角色在具有AmazonS3FullAccess策略(測試)
  • 帳戶A推出了亞馬遜紅移集羣在帳戶A
  • 加載數據到紅移集羣
  • 測試1:卸載到帳戶A中的存儲桶 - 成功
  • 測試2:卸載到帳戶B水桶 - 失敗
  • 增加了桶政策在帳戶B桶(見下文)
  • 測試3:卸載到剷鬥在賬戶B - 成功!

這是我用過的水桶政策:

{ 
    "Id": "Policy11", 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "PermitRoleAccess", 
     "Action": "s3:*", 
     "Effect": "Allow", 
     "Resource": [ 
     "arn:aws:s3:::my-bucket", 
     "arn:aws:s3:::my-bucket/*" 
     ], 
     "Principal": { 
     "AWS": [ 
      "arn:aws:iam::123456789012:role/Redshift-loader" 
     ] 
     } 
    } 
    ] 
} 

Redshift-loader作用已經跟我紅移集羣關聯。此政策授予角色(位於不同的AWS賬戶)對此S3存儲桶的訪問權限。

+0

哇!我不能相信你會在10分鐘內完成所有這些。 –

+1

我在做同樣的事情,除了「Action」:「s3:*」'我有''Action「:」s3:PutObject「'。看到你的回答後,我開始逐個添加角色的權限。最後它在''Action'中工作:[「s3:PutObject」,「s3:List *」]'。顯然,Redshift也需要列表權限來查看這些項目是否已經存在於存儲桶中。非常感謝您的回答。 –

相關問題