如何解決 Amazon Athena 中的「無法驗證/建立輸出儲存貯體」錯誤?

1 分的閱讀內容
0

我在 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: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/*"
            ]
        }
    ]
}

相關資訊

存取 Amazon S3

儲存貯體政策範例

使用儲存貯體政策,控制 VPC 端點的存取

範例 - 物件操作

AWS 官方
AWS 官方已更新 3 年前