2013-02-03 28 views
2

我最近設置了訪問桶以下策略的IAM角色:使用get_contents_to_filename需要什麼角色權限?

{ 
    "Statement": [ 
    { 
     "Sid": "Stmt1359923112752", 
     "Action": [ 
     "s3:*" 
     ], 
     "Effect": "Allow", 
     "Resource": [ 
     "arn:aws:s3:::<BUCKET_NAME>" 
     ] 
    } 
    ] 
} 

雖然我可以列出桶的內容很好,當我打電話get_contents_to_filename上的特定鍵,我收到一個boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden例外。

我需要添加一個角色權限來從S3中獲取密鑰嗎?我檢查了個人密鑰的權限,似乎沒有明確禁止訪問其他用戶的內容;只有一個授予所有者完整權限的權限。

爲了完整起見,我驗證了刪除上述角色策略會阻止完全訪問存儲桶,因此這不是應用策略的問題。

謝謝!

回答

2

您必須授予存儲桶中的對象權限,而不僅限於存儲桶。所以你的資源必須是arn:aws:s3:::<bucketname>/*。這匹配每個對象。

不幸的是,這與桶本身不匹配。因此,您需要將與桶相關的權限設置爲arn:aws:s3:::<bucketname>,將對象權限設置爲arn:aws:s3:::<bucketname>/*,或者僅授予arn:aws:s3:::<bucketname>*。雖然在後一種情況下,給予名爲fred的存儲桶的權限也會給予一個名爲freddy的權限。

+0

謝謝!我剛纔同時看到了這個相關問題:http://stackoverflow.com/questions/8203598/i-need-an-amazon-s3-user-with-full-access-to-a-single-bucket – bboe