Lake Formation のトラブルシューティング
AWS Lake Formation の使用時に問題が発生した場合は、このセクションのトピックを参照してください。
トピック
一般的なトラブルシューティング
この情報を使用して、さまざまな Lake Formation 問題の診断と修正に役立ててください。
エラー: Insufficient Lake Formation permissions on <Amazon S3 location> (<Amazon S3 のロケーション> に対する Lake Formation 許可が不十分です)
Data Catalog リソースがポイントする Amazon S3 ロケーションに対するデータロケーション許可がないまま、そのリソースの作成または変更が試行されました。
Data Catalog データベースまたはテーブルが Amazon S3 のロケーションをポイントする場合は、Lake Formation の CREATE_TABLE
または ALTER
許可を付与するときに、そのロケーションに対する DATA_LOCATION_ACCESS
許可も付与する必要があります。外部のアカウントまたは組織にこれらの許可を付与している場合は、grant オプションを含める必要があります。
これらの許可が外部アカウントに付与されたら、そのアカウントのデータレイク管理者は、アカウント内のプリンシパル (ユーザーまたはロール) に許可を付与する必要があります。別のアカウントから受け取った DATA_LOCATION_ACCESS
許可を付与するときは、所有者アカウントのカタログ ID (AWS アカウント ID) を指定する必要があります。所有者アカウントは、ロケーションを登録したアカウントです。
詳細については、「基盤となるデータのアクセスコントロール」および「データロケーション許可の付与」を参照してください。
エラー:「Insufficient encryption key permissions for Glue API」(Glue API の暗号化キー許可が不十分です)
暗号化された Data Catalog の AWS KMS 暗号化キーに対する AWS Identity and Access Management (IAM) 許可がないまま、Lake Formation 許可の付与が試行されました。
マニフェストを使用する Amazon Athena または Amazon Redshift クエリが失敗します
Lake Formation は、マニフェストを使用するクエリをサポートしません。
エラー:「Insufficient Lake Formation permission(s): Required create tag on catalog」(Lake Formation 許可が不十分です: カタログに対する必須の create タグ)
ユーザー/ロールは、データレイク管理者である必要があります。
無効なデータレイク管理者を削除するとエラーが発生します
無効なデータレイク管理者 (データレイク管理者として定義された削除済み IAM ロール) をすべて同時に削除する必要があります。無効なデータレイク管理者を個別に削除しようとすると、Lake Formation は無効なプリンシパルエラーをスローします。
クロスアカウントアクセスのトラブルシューティング
この情報を使用して、クロスアカウントアクセス問題の診断と修正に役立ててください。
トピック
- クロスアカウント Lake Formation 許可を付与しましたが、受領者がリソースを表示できません
- 受領者アカウントのプリンシパルは、Data Catalog リソースを表示することはできますが、基盤となるデータにはアクセスできません。
- AWS RAM リソース共有招待を承諾するときのエラー:「Association failed because the caller was not authorized」(呼び出し元が認可されていないため、関連付けに失敗しました)
- エラー:「Not authorized to grant permissions for the resource」(リソースの許可を付与する権限がありません)
- エラー:「AWS 組織の情報を取得するためのアクセスが拒否されました」
- エラー:「Organization <organization-ID> not found」(組織 <organization-ID> が見つかりません)
- エラー:「Insufficient Lake Formation permissions: Illegal combination」(Lake Formation 許可が不十分です: 不正な組み合わせ)
- 外部アカウントへのリクエストを許可/取り消ししたときに発生する ConcurrentModificationException
- Amazon EMR を使用して、クロスアカウント経由で共有されたデータにアクセスする際のエラー
クロスアカウント Lake Formation 許可を付与しましたが、受領者がリソースを表示できません
-
受領者アカウントのユーザーはデータレイク管理者ですか。共有時にリソースを表示できるのは、データレイク管理者のみです。
-
名前付きリソース方式を使用して組織外のアカウントとの共有を行っていますか。その場合、受領者アカウントのデータレイク管理者が AWS Resource Access Manager (AWS RAM) でリソース共有招待を承諾する必要があります。
詳細については、「AWS RAM からのリソース共有招待の承諾」を参照してください。
-
AWS Glue でアカウントレベルの (Data Catalog) リソースポリシーを使用していますか。使用しているならば、名前付きリソース方式を使用する場合、AWS RAM がユーザーに代わってポリシーを共有することを認可する特別なステートメントをポリシーに含める必要があります。
詳細については、「AWS Glue と Lake Formation の両方を使用したクロスアカウント許可の管理」を参照してください。
-
クロスアカウントアクセス権を付与するために必要な AWS Identity and Access Management (IAM) 許可を持っていますか。
詳細については、「前提条件」を参照してください。
-
許可を付与したリソースには、
IAMAllowedPrincipals
グループに付与された Lake Formation 許可がない必要があります。 -
アカウントレベルポリシーに、リソースに対する
deny
ステートメントがありますか。
受領者アカウントのプリンシパルは、Data Catalog リソースを表示することはできますが、基盤となるデータにはアクセスできません。
受領者アカウントのプリンシパルは、必要な AWS Identity and Access Management (IAM) 許可を持っている必要があります。詳細については、「共有テーブルの基盤となるデータへのアクセス」を参照してください。
AWS RAM リソース共有招待を承諾するときのエラー:「Association failed because the caller was not authorized」(呼び出し元が認可されていないため、関連付けに失敗しました)
リソースへのアクセス権を別のアカウントに付与した後で、受領側アカウントがリソース共有招待を承諾しようとすると、アクションが失敗します。
$ aws ram get-resource-share-associations --association-type PRINCIPAL --resource-share-arns arn:aws:ram:
aws-region
:444444444444:resource-share/e1d1f4ba-xxxx-xxxx-xxxx-xxxxxxxx5d8d { "resourceShareAssociations": [ { "resourceShareArn": "arn:aws:ram:aws-region
:444444444444:resource-share/e1d1f4ba-xxxx-xxxx-xxxx-xxxxxxxx5d8d ", "resourceShareName": "LakeFormation-MMCC0XQBH3Y", "associatedEntity": "5815803XXXXX", "associationType": "PRINCIPAL", "status": "FAILED", "statusMessage": "Association failed because the caller was not authorized.", "creationTime": "2021-07-12T02:20:10.267000+00:00", "lastUpdatedTime": "2021-07-12T02:20:51.830000+00:00", "external": true } ] }
このエラーは、受領側アカウントがリソース共有招待を承諾するときに AWS Glue によって glue:PutResourcePolicy
が呼び出されるために発生します。この問題を解決するには、プロデューサー/付与者アカウントによって使用される、引き受けられたロールによる glue:PutResourcePolicy
アクションを許可します。
エラー:「Not authorized to grant permissions for the resource」(リソースの許可を付与する権限がありません)
別のアカウントが所有するデータベースまたはテーブルに対するクロスアカウント許可の付与が試行されました。データベースまたはテーブルがアカウントと共有されている場合、データレイク管理者としてこれらに対する許可を付与できるのは、アカウント内のユーザーのみです。
エラー:「AWS 組織の情報を取得するためのアクセスが拒否されました」
アカウントは AWS Organizations 管理アカウントであり、そのアカウント内の組織単位などの組織情報を取得するために必要な許可がありません。
詳細については、「Required permissions for cross-account grants」を参照してください。
エラー:「Organization <organization-ID> not found」(組織 <organization-ID> が見つかりません)
組織とのリソースの共有が試行されましたが、組織との共有が有効になっていません。組織とのリソース共有を有効にしてください。
詳細については、「AWS RAM ユーザーガイド」の「AWS Organizations との共有を有効にする」を参照してください。
エラー:「Insufficient Lake Formation permissions: Illegal combination」(Lake Formation 許可が不十分です: 不正な組み合わせ)
リソースの IAMAllowedPrincipals
グループに Lake Formation 許可が付与されているときに、ユーザーが Data Catalog リソースを共有しました。ユーザーは、リソースを共有する前に IAMAllowedPrincipals
からすべての Lake Formation 許可を取り消す必要があります。
外部アカウントへのリクエストを許可/取り消ししたときに発生する ConcurrentModificationException
ユーザーが LF タグポリシーのプリンシパルに対する許可リクエストを複数同時に許可または取り消すと、Lake Formation は ConcurrentModificationException をスローします。ユーザーはこの例外を捕捉し、失敗した許可/取り消しリクエストを再試行する必要があります。バッチバージョンの GrantPermissions
/RevokePermissions
API オペレーション (BatchGrantPermissions および BatchRevokePermissions) を使用すると、同時許可/取り消しリクエストの数を減らすことで、この問題はある程度緩和されます。
Amazon EMR を使用して、クロスアカウント経由で共有されたデータにアクセスする際のエラー
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 マネージドアクセス許可をアタッチした新しいリソース共有を作成します。
ブループリントとワークフローのトラブルシューティング
この情報を使用して、ブループリントとワークフローの問題の診断と修正に役立ててください。
トピック
- ブループリントが「User: <user-ARN> is not authorized to perform: iam:PassRole on resource: <role-ARN>」(ユーザー: <user-ARN> にはリソース: <role-ARN> で iam:PassRole を実行する許可がありません) エラーで失敗しました
- ワークフローが「User: <user-ARN> is not authorized to perform: iam:PassRole on resource: <role-ARN>」(ユーザー: <user-ARN> にはリソース: <role-ARN> で iam:PassRole を実行する許可がありません) エラーで失敗しました
- ワークフローのクローラが「Resource does not exist or requester is not authorized to access requested permissions」(リソースが存在しないかリクエストされた認可にアクセスする権限がリクエスト元にありません) エラーで失敗しました
- ワークフローのクローラが「An error occurred (AccessDeniedException) when calling the CreateTable operation...」(CreateTable 操作の呼び出し時にエラーが発生しました (AccessDeniedException)) で失敗しました
ブループリントが「User: <user-ARN> is not authorized to perform: iam:PassRole on resource: <role-ARN>」(ユーザー: <user-ARN> にはリソース: <role-ARN> で iam:PassRole を実行する許可がありません) エラーで失敗しました
選択されたロールを渡すために十分な許可を持たないユーザーによって、ブループリントの作成が試行されました。
ロールを渡すことができるようにユーザーの IAM ポリシーを更新するか、必要な PassRole 許可を持つ異なるロールを選択することをユーザーに依頼してください。
詳細については、「Lake Formation のペルソナと IAM 許可のリファレンス」を参照してください。
ワークフローが「User: <user-ARN> is not authorized to perform: iam:PassRole on resource: <role-ARN>」(ユーザー: <user-ARN> にはリソース: <role-ARN> で iam:PassRole を実行する許可がありません) エラーで失敗しました
ワークフローに指定したロールに、ロールがそれ自体を渡すことを許可するインラインポリシーがありませんでした。
詳細については、「(オプション) ワークフロー用の IAM ロールを作成する」を参照してください。
ワークフローのクローラが「Resource does not exist or requester is not authorized to access requested permissions」(リソースが存在しないかリクエストされた認可にアクセスする権限がリクエスト元にありません) エラーで失敗しました
原因の 1 つとして、渡されたロールがターゲットデータベースにテーブルを作成するために十分な許可を持っていなかったことが考えられます。データベースに対する CREATE_TABLE
許可をロールに付与してください。
ワークフローのクローラが「An error occurred (AccessDeniedException) when calling the CreateTable operation...」(CreateTable 操作の呼び出し時にエラーが発生しました (AccessDeniedException)) で失敗しました
原因の 1 つとして、ワークフローロールがターゲットストレージロケーションに対するデータロケーション許可を持っていなかったことが考えられます。データロケーション許可をロールに付与してください。
詳細については、「DATA_LOCATION_ACCESS」を参照してください。