AWS Glue クローラーまたは ETL ジョブが失敗し、AWS Lake Formation のアクセス許可に関連するエラーが発生します。必要な AWS Identity and Access Management (IAM) アクセス許可を設定したにもかかわらず、エラーが発生しています。
解決策
アクセス許可に関する一般的なエラーには、デフォルトのアクセス許可が不十分であることや、他のユーザーにアクセス許可を付与するためのアクセス許可が不十分であることなどがあります。
デフォルトのアクセス許可が不十分
テーブルのクエリを試行するロールには、デフォルトデータベースに対するアクセス許可を付与する必要があります。これらの権限が欠けている場合、Lake Formation で次のような例外が発生します。
"AnalysisException: Unable to verify existence of default database: com.amazonaws.services.glue.model.AccessDeniedException: Insufficient Lake Formation permission(s) on default"
デフォルトの権限を付与する方法を次に示します。
- データレイク管理者で Lake Formation コンソールにログインします。
- 左側のペインで [アクセス許可]、[データレイクへのアクセス許可] を開き、[付与] を選択します。
- [データレイクへのアクセス許可の付与] ページの [プリンシパル] で、Glue ジョブのプリンシパルカテゴリを選択します。
- [IAM ユーザーとロール] で 1 つ以上の IAM ロールを選択します。
- [LF タグまたはカタログリソース] で [名前付きデータカタログリソース] を選択した後、[データベース] で [デフォルト] を選択します。デフォルトのデータベースが表示されない場合は、後に記載した内容に従って作成してください。
- [データレイクへのアクセス許可の付与] ページの [データベースへのアクセス許可] で [データベースへのアクセス許可] から [説明] を選択します。
- [付与] ボタンを押します。
- AWS Glue でジョブを再実行し、ジョブが成功したことを確認します。
デフォルトデータベースがまだない場合、作成する方法を次に示します。
- [管理者のロールとタスク] を開き、[データベース作成者] で [付与] を選択します。
- [アクセス許可の付与] ダイアログボックスで、Glue ロールを選択します。
- [付与可能なアクセス許可] で、付与する特定のアクセス許可として Create database アクセス許可を選択し、[付与] を選択します。この手順により、AWS Glue ジョブにアタッチされた IAM ロールが Lake Formation のデータベース作成者として設定されます。次に、Lake Formation はデフォルトデータベースがない場合は自動的に作成し、ロールに必要なアクセス許可を付与します。
- AWS Glue でジョブを実行し、ジョブが成功することを確認します。
アクセス許可を付与するためのアクセス許可が十分ではない
テーブルへのアクセス許可を付与するには、AWS Glue テーブルに対して付与を行うためのアクセス許可が必要です。たとえば、CloudFormation テンプレートまたは CI/CD パイプライン経由でアクセス許可を付与するには、付与を行うためのアクセス許可が必要です。権限付与が許可されていない場合、Lake Formation で次のような例外が発生します。
"AccessDeniedException: An error occurred (AccessDeniedException) when calling the GrantPermissions operation: Resource does not exist or requester is not authorized to access requested permissions."
- 名前付きリソースメソッドを使用し、ユーザーまたはロールに対し、テーブルまたはデータベースへのアクセスを許可するための権限を付与します。
- このユーザーまたはロールは、AWS CloudFormation や CICD パイプライン経由で、他のユーザーまたはロールにアクセス許可を付与できます。
関連情報
Lake Formation のアクセス許可を管理する
Amazon S3 ロケーションを登録する