翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
このセクションでは、 AWS Lake Formationで Amazon EMR を使用するときの一般的な問題をトラブルシューティングするプロセスについて説明します。
データレイクアクセスが許可されない
データレイク内のデータを分析して処理するには、Amazon EMR クラスターのデータフィルタリングを明示的にオプトインする必要があります。データアクセスに失敗すると、ノートブックエントリの出力に汎用的な Access is not allowed
メッセージが表示されます。
Amazon EMR でオプトインしてデータフィルタリングを許可するには、「AWS Lake Formation デベロッパーガイド」の「Amazon EMR でのデータフィルタリングを許可する」の手順を参照してください。
セッションの期限切れ
EMR Notebooks と Zeppelin のセッションタイムアウトは、Lake Formation の Maximum CLI/API session duration
設定の IAM ロールによって制御されます。この設定のデフォルト値は 1 時間です。セッションタイムアウトが発生すると、Spark SQL コマンドを実行しようとしたときに、ノートブックエントリの出力に次のメッセージが表示されます。
Error 401 HTTP ERROR: 401 Problem accessing /sessions/2/statements.
Reason: JWT token included in request failed validation.
Powered by Jetty:// 9.3.24.v20180605 org.springframework.web.client.HttpClientErrorException: 401 JWT token included in request failed validation…
セッションを検証するには、ページを更新します。IdP を使用して再認証するよう求められ、ノートブックにリダイレクトされます。再認証後、クエリを実行することができます。
リクエストされたテーブルに対するユーザーのアクセス許可がない
アクセス許可のないテーブルにアクセスしようとすると、Spark SQL コマンドを実行しようとしたときに、ノートブックエントリの出力に次の例外が表示されます。
org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to fetch table table.
Resource does not exist or requester is not authorized to access requested permissions.
(Service: AWSGlue; Status Code: 400; Error Code: AccessDeniedException; Request ID: …
テーブルにアクセスするには、Lake Formation で、このテーブルに関連付けられているアクセス許可を更新して、ユーザーにアクセス許可を付与する必要があります。
アカウント間で共有する Lake Formation データをクエリする
Amazon EMR を使用して他のアカウントから共有されているデータにアクセスすると、一部の Spark ライブラリは Glue:GetUserDefinedFunctions
API オペレーションの呼び出しを試みます。 AWS RAM 管理アクセス許可のバージョン 1 および 2 はこのアクションをサポートしていないため、次のエラーメッセージが表示されます。
"ERROR: User: arn:aws:sts::012345678901:assumed-role/my-spark-role/i-06ab8c2b59299508a is not authorized to perform: glue:GetUserDefinedFunctions on resource: arn:exampleCatalogResource because no resource-based policy allows the glue:GetUserDefinedFunctions action"
このエラーを解決するには、リソース共有を作成したデータレイク管理者が、リソース共有にアタッチされた AWS RAM 管理アクセス許可を更新する必要があります。 AWS RAM
マネージドアクセス許可のバージョン 3 では、プリンシパルが glue:GetUserDefinedFunctions
アクションを実行できます。
新しいリソース共有を作成すると、Lake Formation はデフォルトで最新バージョンの AWS RAM 管理アクセス許可を適用し、ユーザーがアクションを実行する必要はありません。既存のリソース共有のクロスアカウントデータアクセスを有効にするには、 AWS RAM マネージドアクセス許可をバージョン 3 に更新する必要があります。
で共有されているリソースに割り当てられた AWS RAM アクセス許可を表示できます AWS RAM。バージョン 3 には次のアクセス許可が含まれています。
Databases
AWSRAMPermissionGlueDatabaseReadWriteForCatalog
AWSRAMPermissionGlueDatabaseReadWrite
Tables
AWSRAMPermissionGlueTableReadWriteForCatalog
AWSRAMPermissionGlueTableReadWriteForDatabase
AllTables
AWSRAMPermissionGlueAllTablesReadWriteForCatalog
AWSRAMPermissionGlueAllTablesReadWriteForDatabase
既存のリソース共有の AWS RAM マネージドアクセス許可バージョンを更新するには
ユーザー (データレイク管理者) は、AWS RAM 「 ユーザーガイド」の手順に従ってAWS RAM 管理アクセス許可を新しいバージョンに更新するか、リソースタイプの既存のアクセス許可をすべて取り消して再付与することができます。アクセス許可を取り消すと、 は AWS RAM リソースタイプに関連付けられたリソース共有 AWS RAM を削除します。アクセス許可を再付与すると、 AWS RAM は最新バージョンの AWS RAM マネージドアクセス許可をアタッチした新しいリソース共有を作成します。
テーブルで挿入、作成、変更の操作を行う
Lake Formation ポリシーによって保護されているデータベースのテーブルについて挿入、作成、または変更はサポートされていません。これらのオペレーションを実行すると、Spark SQL コマンドを実行しようとしたときに、ノートブックエントリの出力に次の例外が表示されます。
java.io.IOException: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception:
Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: …
詳細については、「Amazon EMR と の統合の制限 AWS Lake Formation」を参照してください。