データカタログへのクロスアカウントアクセスを設定する
別のアカウントのデータカタログにアクセスするには、Athena のクロスアカウント AWS Glue 機能を使用するか、Lake Formation でクロスアカウントアクセスをセットアップします。
オプション A: Athena でデータカタログへのクロスアカウントアクセスを設定する
Athena のクロスアカウント AWS Glue カタログ機能を使用して、アカウントにカタログを登録できます。この機能は Athena エンジンバージョン 2 以降でのみ使用でき、アカウント間の同一リージョンでの使用に制限されています。詳細については、「別のアカウントからデータカタログを登録する」を参照してください。
共有するデータカタログのリソースポリシーが AWS Glue で設定されている場合、次の例のように AWS Resource Access Manager へのアクセスを許可し、アカウント B へ許可を付与して、アカウント A のデータカタログを使用するように、更新する必要があります。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "ram.amazonaws.com" }, "Action": "glue:ShareResource", "Resource": [ "arn:aws:glue:
<REGION>
:<ACCOUNT-A>
:table/*/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:database/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:catalog" ] }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<ACCOUNT-B>
:root" }, "Action": "glue:*", "Resource": [ "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:table/*/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:database/*", "arn:aws:glue:<REGION>
:<ACCOUNT-A>
:catalog" ] } ] }
詳細については、「AWS Glue データカタログへのクロスアカウントアクセスを構成する」を参照してください。
オプション B: Lake Formation でクロスアカウントアクセスを設定する
AWS Lake Formation では、単一のアカウントを使用して中央データカタログを管理できます。この機能を使用して、データカタログメタデータと基盤となるデータにクロスアカウントアクセスを実装します。例えば、所有者アカウントは、テーブルに対する SELECT
許可を別の (受信者) アカウントに付与できます。
共有のデータベースまたはテーブルを Athena クエリエディタに表示するには、Lake Formation で共有のデータベースまたはテーブルへのリソースリンクを作成します。Lake Formation の受信者アカウントが所有者のテーブルをクエリすると、CloudTrail が受信者アカウントと所有者アカウントの両方のログにデータアクセスイベントを追加します。
共有ビューの場合は、次の点に注意してください。
-
クエリは、ソーステーブルまたはビューではなく、ターゲットリソースリンクで実行され、出力がターゲットアカウントと共有されます。
-
ビューだけを共有するだけでは不十分です。ビューの作成に関与するすべてのテーブルは、クロスアカウント共有の一部である必要があります。
-
共有リソースで作成されたリソースリンクの名前は、所有者アカウントのリソースの名前と一致する必要があります。名前が一致しない場合、「
Failed analyzing stored view 'awsdatacatalog.
」のようなエラーメッセージが表示されます。my-lf-resource-link
.my-lf-view
': line 3:3: Schemaschema_name
does not exist
Lake Formation でのクロスアカウントアクセスの詳細については、「AWS Lake Formation デベロッパーガイド」の以下のリソースを参照してください。