當我在 SQL Workbench/J 或 AWS Lambda 中執行 Amazon Athena 查詢,或當我使用 AWS SDK 時,收到以下錯誤:"Unable to verify/create output bucket."
解決方法
如果您手動設定查詢結果位置,請確認 Amazon Simple Storage Service (Amazon S3) 儲存貯體存在。
如果 S3 儲存貯體已存在,請檢查執行查詢的使用者或角色中,AWS Identity and Access Management (IAM) 政策的下列屬性:
- 確認該政策允許所需的權限,例如 s3:GetBucketLocation。
- 確保 IAM 政策不包含使用 aws:SourceIp 或 aws:SourceVpc 限制 Amazon S3 權限的 Deny 陳述式。
例如,以下政策允許 IAM 使用者或角色執行查詢:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload",
"s3:CreateBucket",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::aws-athena-query-results-*",
"arn:aws:s3:::query-results-custom-bucket",
"arn:aws:s3:::query-results-custom-bucket/*"
]
}
]
}
**注意:**對於現有的 S3 儲存貯體,您可以移除 s3:CreateBucket 權限。如果您手動設定查詢結果位置,則不要在政策中包含 arn:aws:s3:::aws-athena-query-results-*。只有當您手動設定查詢結果位置時,政策必須包含 arn:aws:s3:::query-results-custom-bucket 和 arn:aws:s3:::query-results-custom-bucket/*。
相關資訊
從 Athena 控制對 Amazon S3 的存取
Amazon S3 儲存貯體政策範例
使用儲存貯體政策控制來自虛擬私有雲端 (VPC) 端點的存取
Amazon S3 的政策動作