MSCK REPAIR TABLE は Athena のパーティションを検出しますが、それらを AWS Glue データカタログに追加しません

最終更新日: 2020 年 6 月 18 日

MSCK REPAIR TABLE を実行すると、Amazon Athena はパーティションのリストを返しますが、AWS Glue データカタログのテーブルにパーティションを追加できません。

簡単な説明

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

  • AWS Identity and Access Management (IAM) ユーザーまたはロールに glue:BatchCreatePartition アクションを許可するポリシーがありません。
  • Amazon Simple Storage Service (Amazon S3) のパスは、小文字ではなくキャメルケースです (例: userid ではなく userId )。

解決方法

IAM ポリシーで glue:BatchCreatePartition を許可する

MSCK REPAIR TABLE の実行に使用しているユーザーまたはロールにアタッチされている IAM ポリシーを確認します。Athena で AWS Glue データカタログを使用する場合、IAM ポリシーで glue:BatchCreatePartition アクションを許可する必要があります。ポリシーがそのアクションを許可しない場合、Athena はメタストアにパーティションを追加できません。glue:BatchCreatePartition アクションを許可する IAM ポリシーの例については、AmazonAthenaFullAccess マネージドポリシーを参照してください。

Amazon S3 パスを小文字に変更する

Amazon S3 パス名は小文字にする必要があります。パスがキャメルケースの場合、MSCK REPAIR TABLE はパーティションを AWS Glue データカタログに追加しません。たとえば、Amazon S3 パスが userId の場合、次のパーティションは AWS Glue データカタログに追加されません。

  • s3://awsdoc-example-bucket/path/userId=1/
  • s3://awsdoc-example-bucket/path/userId=2/
  • s3://awsdoc-example-bucket/path/userId=3/

この問題を解決するには、キャメルケースの代わりに小文字を使用します。

  • s3://awsdoc-example-bucket/path/userid=1/
  • s3://awsdoc-example-bucket/path/userid=2/
  • s3://awsdoc-example-bucket/path/userid=3/