如何解决 Amazon Athena 中的“Unable to verify/create output bucket”错误?

上次更新时间:2020 年 2 月 10 日

当我在 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 策略:

  • 确认允许以下示例策略中的权限。
  • 确保 IAM 策略不包含使用 aws:SourceIpaws:SourceVpc 限制 S3 权限的 Deny 语句。

注意:如果存储桶已存在,则不需要 s3:CreateBucket 权限。如果手动设置查询结果的位置,则不需要 arn:aws:s3:::aws-athena-query-results-* 权限。仅当手动设置查询结果的位置时,才需要 arn:aws:s3:::query-results-custom-bucketarn: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/*"
            ]
        }
    ]
}