【AWS Athena】Lambdaからクエリを実行した際のIAM由来のエラーと対策

Athenaをテストした際に遭遇したエラーを以下にまとめる。別のエラーに遭遇した場合は後日追加していく。

Unable to Verify/Create Output Bucket

Unable to Verify/Create Output Bucket

S3へのアクセス権の不足が原因。以下のポリシーがアタッチされているか確認する。

  • s3:ListBucket
  • s3:ListBucketMultipartUploads
  • s3:GetObject
  • s3:GetBucketLocation
  • s3:ListMultipartUploadParts
  • s3:AbortMultipartUpload
  • s3:PutObject

Access Denied

Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; 

S3へのアクセス権の不足。 以下のポリシーがアタッチされているか確認する。

  • s3:PutObject
  • s3:ListObject

Insufficient permissions to execute the query.

Insufficient permissions to execute the query. User: ROLE_NAME is not authorized to perform: glue:GetTable on resource: arn:aws:glue:ap-northeast-1:UserId:catalog

エラーコードの通り、glue:GetTableのアクセス権が不足している。

HIVE_CANNOT_OPEN_SPLIT

Your query has the following errors:HIVE_CANNOT_OPEN_SPLIT: Error opening Hive split s3://BUCKET_NAME/part-00000-feda4fa5-d862-48ba-88ad-3a468e234a27-c000.snappy.parquet (offset=0, length=7791): com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code:403; Error Code: 403 Forbidden; Request ID: 028A0DA47697C2D7;(以下略)

この記事の通り、glue:GetTablesのアクセス権が不足している。

特に、自分でポリシーを作成した際に忘れやすい。