当我在 SQL Workbench/J 和 AWS Lambda 中或使用 AWS 开发工具包运行 Amazon Athena 查询时,收到错误消息:“Unable to verify/create output bucket”。
简短描述
以下是导致此错误的部分常见原因:
- 您为查询结果的位置指定的 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 终端节点的访问
示例 – 对象操作