当我在 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 的策略操作