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/*"
]
}
]
}
関連情報
Amazon S3 へのアクセス
バケットポリシーの例
バケットポリシーを使用して VPC エンドポイントからのアクセスを制御
例 - オブジェクトオペレーション