AWS Glue クローラーまたは ETL ジョブが「Insufficient Lake Formation permission(s)」(Lake Formation の許可が不十分です) というエラーで失敗するのはなぜですか?

最終更新日: 2022 年 2 月 15 日

AWS Glue クローラーまたは ETL ジョブが「Insufficient Lake Formation permission(s)」(Lake Formation の許可が不十分です) というエラーで失敗します。しかし、AWS Glue クローラーまたは AWS Glue ETL ジョブに関連付けられた AWS Identity and Access Management (IAM) ロールには、必要な IAM 許可があります。

簡単な説明

AWS Glue データカタログと Amazon Simple Storage Service (Amazon S3) リソースへのアクセスは、IAM ポリシーだけでなく、AWS Lake Formation の許可を使用して管理されることもあります。AWS Glue クローラーまたは ETL ジョブに関連付けられた IAM ロールに、次に対して読み書きを実行するのに必要な Lake Formation の許可がない場合、「Insufficient Lake Formation permission(s)」(Lake Formation の許可が不十分です) というエラーが表示されます。

  • データカタログ内のデータベース/テーブル
  • Amazon S3 の基盤となるデータ

解決方法

データカタログデータベースに関するアクセスに関する問題

データカタログデータベースに関連するアクセスの問題が原因でエラーが発生した場合は、次のようなエラーメッセージが表示されます。

ERROR : Insufficient Lake Formation permission(s) on example-database (Database name: example-database)

このエラーを解決するには、データレイク管理者ロールで AWS Lake Formation コンソールにサインインし、クローラー/ETL ジョブに関連付けられている IAM ロールに Create database 許可を付与します。

  1. AWS Lake Formation コンソールを開きます。
  2. ナビゲーションペインの [Permissions] (許可) で、Administrative roles and tasks 管理者のロールとタスクを選択します。
  3. [Database creators] (データベース作成者) で、[Grant] (付与) を選択します。
  4. [IAM users and roles] (IAM ユーザーとロール) で、ドロップダウンリストからアクセスを許可する IAM ロールを選択します。
  5. [Catalog permissions] (カタログ許可) で、[Create database] (データベースを作成) を選択します。
  6. IAM ロールでアカウントの他のロールに許可を付与する必要がある場合は、[Grantable permissions] (付与可能な許可) で [Create database] (データベースを作成) を選択します。
  7. [Grant] (付与) を選択します。

データカタログテーブルに関するアクセスの問題

データカタログテーブルに関連するアクセスの問題が原因でエラーが発生した場合は、次のようなエラーメッセージが表示されます。

ERROR : Insufficient Lake Formation permission(s) on example-table (Database name: example-database, Table Name: example-table)

このエラーを解決するには、クローラー/ETL ジョブに関連付けられている IAM ロールに example-databaseCreate table 許可を付与します。

  1. AWS Lake Formation コンソールを開きます。
  2. ナビゲーションペインの [Permissions] (許可) で、[Data lake permissions] (データレイクの許可) を選択します。
  3. [Grant] (付与) を選択します。
  4. [Principals] で、[IAM users and roles] (IAM ユーザーとロール) を選択します。
  5. [IAM users and roles] (IAM ユーザーとロール)で、IAM ロールを選択します。
  6. [LF-Tags or catalog resources] (LF タグまたはカタログリソース) で、[Named data catalog resources] (名前付きデータカタログリソース) を選択します。
  7. [Databases] (データベース) で、データベースを選択します。
  8. [Database permissions] (データベースの許可) で、ユースケースに基づいて [Create table] (テーブルを作成) または [Super] (スーパー) を選択します。
  9. IAM ロールでアカウントの他のロールに許可を付与する必要がある場合は、[Grantable permissions] (付与可能な許可) で必要な許可を選択します。
  10. [Grant] (付与) を選択します。

Amazon S3 パスに関するアクセスの問題

Amazon S3 パスに関連するアクセスの問題が原因でエラーが発生した場合、エラーメッセージには S3 パスが含まれ、次のようになります。

ERROR : Insufficient Lake Formation permission(s) on s3://S3-example-bucket/example-prefix/ (Database name: example-database, Table Name: example-table)

つまり、クローラー/ETL ジョブに関連付けられている IAM ロールには、S3 パスにアクセスするために必要な許可がありません。

エラーを解決するには、次の操作を行います。

  1. AWS Lake Formation コンソールを開きます。
  2. ナビゲーションペインの [Register and ingest] (登録および取り込み) で、[Data lake locations] (データレイクのロケーション) を選択します。
    データレイクのロケーションを表示できます。
  3. エラーメッセージに記載された S3 パスの Amazon S3 パスまたはプレフィックスが、[Data lake locations] (データレイクのロケーション) リストに登録されているロケーションであることを確認します。
  4. エラーメッセージの S3 パスまたはプレフィックスが [Data lake locations] (データレイクのロケーション) リストに表示されているものと異なる場合は、[Register location] (ロケーションを登録) を選択します。
  5. [Amazon S3 path] (Amazon S3 パス) で [Browse] (閲覧) を選択し、正しい S3 パスを選択します。
  6. [IAM role] (IAM ロール) で、デフォルトで選択されている [AWSServiceRoleForLakeFormationDataAccess] のままにします。カスタム IAM ロールを使用する必要がある場合は、関連する要件が満たされていることを確認してください。
    重要: S3 ロケーションを登録すると、Lake Formation は前の IAM ロールを引き受け、そのロケーションのデータにアクセスする統合された AWS のサービスに一時的な認証情報を付与します。したがって、「AccessDenied」(アクセス拒否) エラーを防ぐために、クローラー/ETL ジョブに関連付けられている IAM ロールに S3 バケットへの読み取り/書き込みに必要な許可があることを確認してください。
  7. ナビゲーションペインの [Permissions] (許可) で、[Data locations] (データのロケーション) を選択します。
  8. [Grant] (付与) を選択します。
  9. [Grant permissions] (許可を付与) で [My account] (自分のアカウント) を選択します。
  10. [IAM users and roles] (IAM ユーザーとロール) で、アクセスを付与する IAM ロールを選択します。
  11. [Grant] (付与) を選択します。

Managing Lake Formation permissions (Lake Formation の許可の管理)

Registering an Amazon S3 location (Amazon S3 のロケーションの登録)

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?