我爲S3存儲桶中不屬於我的帳戶的文件創建了Athena表。 表被分區,當我運行MSCK REPAIR TABLE命令時,它成功並顯示不在Metastore中的分區。但是,當我查詢表它給下面的錯誤查詢Athena表的問題源存儲桶來自不同的帳戶
「您所查詢的有如下錯誤(S):
沒有足夠的權限來執行查詢
此查詢運行反對」 .... ..「數據庫,除非查詢資格請張貼錯誤消息對我們的詢問ID論壇或聯繫客戶支持:...........」
這可能是什麼問題嗎?
我爲S3存儲桶中不屬於我的帳戶的文件創建了Athena表。 表被分區,當我運行MSCK REPAIR TABLE命令時,它成功並顯示不在Metastore中的分區。但是,當我查詢表它給下面的錯誤查詢Athena表的問題源存儲桶來自不同的帳戶
「您所查詢的有如下錯誤(S):
沒有足夠的權限來執行查詢
此查詢運行反對」 .... ..「數據庫,除非查詢資格請張貼錯誤消息對我們的詢問ID論壇或聯繫客戶支持:...........」
這可能是什麼問題嗎?
您描述的問題是由錯誤設置的訪問策略引起的。我猜想,雅典娜帳戶具有listBucket
特權,但不是getObject
。
作爲示例,我使用以下存儲桶策略來測試跨帳戶訪問權限。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::bucketname","arn:aws:s3:::bucketname/*"],
"Principal": "*"
}
]
}
請更改樣本中的委託人或將您的數據公開爲整個互聯網。
我也有類似的問題,事實證明,我的表是使用AWS膠水創建。向Glue添加權限解決了問題。
即使我有同樣的問題,但美中不足的是,有時根據不同區域的服務都放在策略傳播需要時間。
下面是我指的是政策樣品的例子:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Corss-Account-Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AWS-ACCOUNT-ID:root" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::example-bucket", "arn:aws:s3:::example-bucket/*" ] } ] }
我期待在源AWS賬戶的區權限。在公開訪問下,我可以看到列出對象,寫入對象,讀取存儲桶權限,寫入授予「任何AWS用戶」的存儲桶權限。這不夠嗎?但是,在「訪問其他AWS賬戶」下沒有添加賬戶。 – Sarang
對我來說,在控制檯中向任何用戶添加READ訪問權限不起作用。我必須明確使用存儲桶策略才能運行。 –