Amazon Athena の「出力バケットを確認/作成できません」というエラーを解決する方法を教えてください。

最終更新日: 2021 年 5 月 21 日

SQL Workbench/J、AWS Lambda、または AWS SDK で Amazon Athena クエリを実行すると、「出力バケットを確認/作成できません」というエラーが発生します。

簡単な説明

このエラーの一般的な原因は次のとおりです。

  • クエリの結果の保存先に指定した Amazon Simple Storage Service (Amazon S3) バケットが存在しません。
  • クエリを実行しているユーザーまたはロールの AWS Identity and Access Management (IAM) ポリシーには、s3:GetBucketLocation などの必要な Amazon S3 のアクセス許可がありません。

解決方法

クエリの結果の保存先を手動で設定する場合は、S3 バケットが存在することを確認する必要があります。次に、クエリを実行しているユーザーまたはロールの IAM ポリシーを確認します。

  • 次のポリシーの例 (s3: GetBucketLocation など) で、アクセスが許可されていることを確認します。
  • S3 のアクセス許可を制限する aws:SourceIp または aws:SourceVpc を使用する Deny ステートメントが、IAM ポリシーに含まれていないことを確認します。

注: バケットが既に存在する場合、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/*"
            ]
        }
    ]
}