AWS Glue の Lake Formation アクセス許可エラーをトラブルシューティングする方法を教えてください。

所要時間4分
0

AWS Glue クローラまたは ETL ジョブが AWS Lake Formation 関連のエラーで失敗します。ただし、必要な AWS Identity and Access Management (IAM) アクセス許可は設定しています。

簡単な説明

AWS Glue データカタログや Amazon Simple Storage Service (Amazon S3) などのリソースにアクセスするには、正しい IAM ポリシーと Lake Formation アクセス許可が必要です。Amazon S3 クローラーまたは ETL ジョブに関連付けられている IAM ロールに十分な Lake Formation アクセス許可がないと、エラーが発生します。次のリソースへの読み取りと書き込みには、正しい Lake Formation アクセス許可が必要です。

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

解決方法

データカタログデータベース作成時のアクセスの問題

データカタログデータベースの作成の問題がエラーの原因である場合は、次のようなエラーメッセージが表示されます。

Insufficient Lake Formation permission(s): Required Create Database on Catalog

このエラーを解決するには、データレイク管理者ロールを使用して Lake Formation コンソールにアクセスします。次に、関連する IAM ロールにデータベース作成権限を付与します。

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

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

データカタログデータベースの問題がエラーの原因である場合は、次のいずれかのようなエラーメッセージが表示されます。

Insufficient Lake Formation permission(s) on example_database: Required Create Table
Insufficient Lake Formation permission(s) on example_database: (Database name: example_database)
Insufficient Lake Formation permission(s) on example_table (Database name: example_database, Table Name: example_table)

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

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

  1. 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] (テーブルの作成) または [Describe] (説明) を選択します。:クローラロールには、書き込み先のデータベースに対する Describe アクセス許可と Create Table アクセス許可の両方が必要です。AWS Glue ETL の場合、ジョブ自体から UpdateDatabase または DeleteDatabase API 呼び出しを実行しない限り、これらのアクセス許可でも十分です。このような場合は、Alter または Drop アクセス許可でを付与してください。
  9. IAM ロールでアカウントの他のロールにアクセス許可を付与する必要がある場合は、[Grantable permissions] (付与可能なアクセス許可) で必要なアクセス許可を選択します。
  10. [Grant] (付与) を選択します。

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

データカタログテーブルの問題がエラーの原因となっている場合は、次のいずれかのようなエラーメッセージが表示されます。

Insufficient Lake Formation permission(s) on example_table (Database name: example_database, Table Name: example_table)
Insufficient Lake Formation permission(s): Required Alter on example_table

このエラーが表示される場合は、AWS Glue クローラーまたは ETL ジョブがテーブルにアクセスしています。クローラーについては、そのクローラーに関連付けられた IAM ロールに example_table に対する Describe および Alter アクセス許可を付与します。

example_table を読み取る ETL ジョブの場合は、そのジョブに関連付けられた IAM ロールに example_table に対する Describe および Select アクセス許可を付与します。ETL ジョブが example_table を更新している場合は、そのジョブに関連付けられている IAM ロールに example_table に対する Alter アクセス許可を付与します。

  1. 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. [Tables-optional] (テーブル (オプション)) では、クローラがアクセスしているテーブルを選択します。
  9. [Table permissions] (テーブルアクセス許可) で、ユースケースに応じて [Select]、[Describe]、または [Alter] を選択します。
  10. IAM ロールでアカウントの他のロールにアクセス許可を付与する必要がある場合は、[Grantable permissions] (付与可能なアクセス許可) で必要なアクセス許可を選択します。
  11. [Grant] (付与) を選択します。

Lake Formation IAM アクセス許可に関するアクセスの問題

Lake Formation の IAM アクセス許可の問題がエラーの原因となっている場合は、次のいずれかのようなエラーメッセージが表示されます。

com.amazonaws.services.lakeformation.model.AccessDeniedException: Service Principal: glue.amazonaws.com is not authorized to perform: lakeformation:GetDataAccess
on resource: s3://sample-bucket/sample-prefix/ because no identity-based policy allows the lakeformation:GetDataAccess action

このエラーは、AWS Glue ジョブロールまたは AWS Glue クローラーロールに十分な IAM アクセス許可がない場合に発生します。ジョブまたはロールには、Lake Formation がロールと Amazon S3 ロケーションに一時的な認証情報を配布できるかどうかを確認するアクセス許可が必要です。

  1. IAM コンソールを開きます。
  2. AWS Glue クローラーまたは AWS Glue ジョブロール用の IAM ポリシーを作成します。
  3. ポリシー内のリソースに対するアクションとして、 LakeFormation: getDataAccess アクセス許可を追加します。:API LakeFormation:GetDataAccess は、リソースとしてワイルドカードを使用する必要があります。
  4. ポリシーを AWS Glue クローラーまたは AWS Glue ジョブロールにアタッチします。

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

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

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

このエラーは、クローラーまたは ETL ジョブに関連付けられた IAM ロールに Amazon S3 パスへのアクセスに必要なアクセス許可がない場合に発生します。

このエラーを解決するには、次のステップを実行してください。

  1. Lake Formation コンソールを開きます。
  2. ナビゲーションペインの [Register and ingest] (登録および取り込み) で、[Data lake locations] (データレイクのロケーション) を選択します。
  3. Amazon S3 のパスまたはエラーメッセージのパスのプレフィックスが、データレイクの場所リストに登録されている場所であることを確認します。
  4. エラーメッセージの Amazon S3 パスまたはプレフィックスがデータレイクのロケーションリストに表示されていない場合は、[Register location] (ロケーションを登録) を選択します。
  5. Amazon S3 パスについては、[Browse] (ブラウズ) を選択し、正しい Amazon S3 パスを選択します。
  6. [IAM role] (IAM ロール) は、デフォルトで選択されている AWSServiceRoleForLakeFormationDataAccess のままにします。カスタム IAM ロールを使用する必要がある場合は、関連する要件が満たされていることを確認してください。**重要:**Amazon S3 ロケーションを登録すると、Lake Formation は前述の IAM ロールを引き継ぎます。これにより、その場所のデータにアクセスする統合された AWS サービスに一時的な認証情報が付与されます。登録した Amazon S3 ロケーションに関連付けられている 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 のロケーションの登録)

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ