Athena のクロスアカウントに関する問題を解決する方法を教えてください。

所要時間1分
0

AWS Glue データカタログと AWS Lake Formation の共有リソースで発生する、Amazon Athena のクロスアカウントクエリに関する問題を解決したいと考えています。

解決方法

データカタログまたは Lake Formation のクロスアカウント共有リソースについては、次のトラブルシューティング手順に従ってください。

データカタログのクロスアカウント共有リソース

Athena のクロスアカウントデータカタログ機能を使用して別のアカウントからカタログにアクセスした場合、「アクセス拒否」エラーが発生する場合があります。たとえば、GetDatabasesGetTable などのデータカタログ API アクションで「アクセス拒否」エラーが発生することがあります。別のアカウントのユーザーに Amazon Simple Storage Service (Amazon S3) バケットへのアクセスを許可した場合も、「アクセス拒否」エラーが表示されることがあります。

これは、クロスアカウントクエリでは、自分以外のアカウントがデータカタログと Amazon S3 バケットにアクセスできる必要があるためです。

次の手順に従って、データカタログと Amazon S3 のアクセス許可を確認します。

データカタログアクセス許可

手順に従って、所有者から借り手アカウントにデータカタログアクセス許可を付与します。次に、オーナーアカウントのデータカタログリソースに対する AWS Identity and Access Management (IAM) ポリシーアクセス許可を、借り手ロールに付与します。

詳細については、「AWS Glue データカタログのリソースへのクロスアカウントアクセス許可を付与する方法を教えてください」を参照してください。

アマゾン S3 のアクセス許可

次の手順に従い、S3 バケットポリシーを使用して、クエリを実行するためのクロスアカウントアクセスをユーザーに付与します。詳細については、「Amazon S3 バケットにあるオブジェクトへのクロスアカウントアクセスを付与する方法を教えてください」を参照してください。

AWS Key Management Service (AWS KMS) キーで暗号化された S3 バケットの場合、追加のアクセス許可が必要になる場合があります。手順に従って、カスタム AWS KMS キーで暗号化されたバケットへのクロスアカウントアクセスを付与します。 詳細については、「クロスアカウントユーザーがカスタム AWS KMS キーで暗号化された S3 オブジェクトにアクセスしようとすると、アクセス拒否エラーが表示される理由を教えてください」を参照してください。

Lake Formation のクロスアカウント共有リソース

次の手順に従って、Lake Formation のクロスアカウントに関連するエラーメッセージをトラブルシューティングします。

「Lake Formation のアクセス許可が不足しています: 組み合わせが無効です」

このエラーは、リソースの IAMallowedPrincials グループに Lake Formation アクセス許可が付与されているときに、ユーザーがデータカタログリソースを共有ようとすると発生します。このエラーを解決するには、リソースを共有する前に、ユーザーは IAMAllowedPrincipals からすべての Lake Formation アクセス許可を取り消す必要があります。

「HIVE_METASTORE_ERROR: テーブルでストレージ記述子が不足しています」

このエラーは、ターゲットテーブルにアクセス許可が付与されていない場合に発生します。リソースリンクに付与されたアクセス許可は、リンクされたデータベースまたはターゲットテーブルにはアクセス許可を付与しません。次の手順に従って、ターゲットテーブルに対するアクセス許可を明示的に付与します。

  1. Lake Formation コンソールを開きます。
  2. ナビゲーションペインで、[テーブル] を選択します。
  3. [テーブル] で、リソースリンクを選択します。
  4. [アクション]を選択してから、[ターゲットに付与] を選択します。
  5. [データレイクアクセス許可の付与] で、アクセス許可 SELECT と DESCRIBE を付与し、[付与] を選択します。

詳細については、「Lake Formation におけるリソースリンクの仕組み」を参照してください。

「S3 パスでアクセス許可が拒否されました」

このエラーは、IAM ロールに S3 バケットからオブジェクトを読み取るアクセス許可がない場合に発生する可能性があります。たとえば、所有者アカウントに属する暗号化されたデータをクエリするのに、AWS KMS キーを使用すると発生する場合があります。このシナリオでは、IAM ロールに別のアカウントのデータを復号するアクセス許可がない場合にエラーが発生します。

デフォルトの AWSServiceRoleForLakeFormationDataAccess サービスリンクロールを使用した場合は、カスタム IAM ロールを作成します。IAM ロールに、別のアカウントと共有するために必要な AWS KMS キーアクセス許可があることを確認してください。所有者アカウントにキーポリシーを追加します。次に、新しい IAM ロールで、Lake Formation のバケットを再登録します。

詳細については、「Lake Formation に関する問題のトラブルシューティング」を参照してください。

関連情報

MSCK REPAIR TABLE クエリで、AWS Glue データカタログにパーティションが追加されない理由を教えてください

Athenaで発生する Lake Formation アクセス許可に関する問題のトラブルシューティング方法を教えてください

Amazon Athena を使用してクロスアカウント AWS Glue データカタログをクエリする

AWS公式
AWS公式更新しました 9ヶ月前