Lake Formation でのリソースリンクの仕組み
リソースリンクは、ローカルまたは共有のデータベースまたはテーブルへのリンクである Data Catalog オブジェクトです。データベースまたはテーブルへのリソースリンクを作成すると、そのデータベース名やテーブル名を使用する場所ならどこでもリソースリンク名を使用することができます。テーブルのリソースリンクは、glue:GetTables()
によってユーザーが所有するテーブル、またはユーザーと共有されたテーブルとともに返され、Lake Formation コンソールの [Tables] (テーブル) ページにエントリとして表示されます。データベースへのリソースリンクも同様に機能します。
データベースまたはテーブルへのリソースリンクを作成すると、以下を実行できるようになります。
-
Data Catalog 内のデータベースまたはテーブルに異なる名前を割り当てる。これは、異なる AWS アカウントが同じ名前のデータベースやテーブルを共有する場合や、アカウント内の複数のデータベースに同じ名前のテーブルがある場合は特に便利です。
-
他のリージョンのデータベースやテーブルを指すリソースリンクをこれらのリージョンに作成することで、どの AWS リージョンからでも Data Catalog のデータベースやテーブルにアクセスできます。ソースデータやメタデータを Glue データカタログにコピーしなくても、これらのリソースリンクを Athena や Amazon EMR で使用してどのリージョンでもクエリを実行し、AWS Glue ETL Spark ジョブを実行できます。
-
共有データベースやテーブルにアクセスするクエリを実行するには、Amazon Athena や Amazon Redshift Spectrum などの AWS の統合サービスを使用します。統合サービスには、アカウントをまたいでデータベースやテーブルに直接アクセスできないものがありますが、アカウントにある他のアカウントのデータベースやテーブルへのリソースリンクにアクセスすることは可能です。
注記
AWS Glue 抽出、変換、ロード (ETL) スクリプトで共有データベースやテーブルを参照するためにリソースリンクを作成する必要はありませんが、複数の AWS アカウントが同じ名前のデータベースやテーブルを共有している場合の曖昧さを回避するために、リソースリンクを作成して使用するか、ETL 操作の呼び出し時にカタログ ID を指定することができます。
以下は、2 つのリソースリンクが表示されている Lake Formation コンソールの [Tables] (テーブル) ページの例です。リソースリンクの名前は、常にイタリック体で表示されます。各リソースリンクは、リンクされた共有リソースの名前と所有者と共に表示されます。この例では、AWS アカウント 1111-2222-3333 のデータレイク管理者が、inventory
テーブルと incidents
テーブルをアカウント 1234-5678-9012 と共有しました。共有後、そのアカウントのユーザーがそれらの共有テーブルへのリソースリンクを作成しました。
以下は、リソースリンクに関する注意点と制限です。
-
リソースリンクでは、共有テーブルの基盤となるデータをクエリするために、Athena および Redshift Spectrum などの統合サービスを有効にすることが必要になります。これらの統合サービスでのクエリは、リソースリンク名に対して作成されます。
-
テーブルが含まれるデータベースの [Use only IAM access control for new tables in this database] (このデータベースの新しいテーブルには IAM アクセス制御のみを使用する) 設定がオフになっていることを前提とすると、データベースを表示してそれにアクセスできるのは、リソースリンクを作成したプリンシパルのみになります。アカウント内の他のプリンシパルがリソースリンクにアクセスできるようにするには、それに対する
DESCRIBE
許可を付与します。他のユーザーがリソースリンクをドロップできるようにするには、それに対するDROP
許可を付与します。データレイク管理者は、アカウント内のすべてのリソースリンクにアクセスできます。別のプリンシパルが作成したリソースリンクをドロップするには、まずデータレイク管理者がリソースリンクに対するDROP
許可を管理者自身に付与する必要があります。詳細については、「Lake Formation 許可のリファレンス」を参照してください。重要
リソースリンクに対する許可を付与しても、ターゲットの (リンクされた) データベースまたはテーブルに対する許可は付与されません。ターゲットに対する許可は、別途付与する必要があります。
-
リソースリンクを作成するには、Lake Formation の
CREATE_TABLE
またはCREATE_DATABASE
許可と、glue:CreateTable
またはglue:CreateDatabase
AWS Identity and Access Management (IAM) 許可が必要です。 -
ローカル (所有する) Data Catalog リソースと、AWS アカウントと共有されているリソースへのリソースリンクを作成することができます。
-
リソースリンクを作成するときに、ターゲット共有リソースが存在するかどうか、またはそのリソースに対するクロスアカウント許可があるかどうかを確認するためのチェックは実行されません。これは、リソースリンクと共有リソースを任意の順序で作成できるようにします。
-
リソースリンクを削除しても、リンクされた共有リソースはドロップされません。共有リソースをドロップしても、そのリソースへのリソースリンクは削除されません。
-
リソースリンクチェーンを作成することが可能ですが、API は最初のリソースリンクのみを使用するので、作成する価値はありません。