我在 SQL Workbench/J、AWS Lambda 或使用 AWS 開發套件執行 Amazon Athena 查詢時,發生錯誤: 「無法驗證/建立輸出儲存貯體。」
簡短描述
以下是此錯誤的一些常見原因:
- 您為查詢結果位置指定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體不存在。
- 執行查詢的使用者或角色的 AWS Identity and Access Management (IAM) 政策沒有必要的 Amazon S3 權限,例如 ** S3:GetBucketLocation**。
解決方案
如果您手動設定查詢結果位置,則必須確認 S3 儲存貯體存在。然後,檢查執行查詢的使用者或角色的 IAM 政策:
- 確認下列範例政策中的權限,例如是否允許 s3:GetBucketLocation。
- 確定 IAM 政策不包含使用 aws:SourceIp 或 aws:SourceVpc 限制 S3 權限的 Deny 陳述式。
**注意:**如果儲存貯體已經存在,則不需要 s3:CreateBucket 權限。如果您手動設定查詢結果位置,則不要在政策中包含 arn:aws:s3:::aws-athena-query-results-*。僅在您手動設定查詢結果位置時,此政策才必須包含 arn:aws:s3:::query-results-custom-bucket 和 arn:aws:s3:::query-results-custom-bucket/*。
{
"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/*"
]
}
]
}
相關資訊
存取 Amazon S3
儲存貯體政策範例
使用儲存貯體政策,控制 VPC 端點的存取
範例 - 物件操作