コンシューマーとしての Lake Formation 管理のデータ共有を使用する - Amazon Redshift

コンシューマーとしての Lake Formation 管理のデータ共有を使用する

Amazon Redshift では、AWS Lake Formation データ共有を通じて共有されたデータにアクセスして分析できます。データ共有は、さまざまなデータソースからのテーブルやデータベースなどのデータオブジェクトのコレクションを含むデータ製品です。

AWS Lake Formation 管理者がデータ共有への招待を発見して、そのデータ共有にリンクする AWS Glue Data Catalog にデータベースを作成した後、コンシューマークラスターまたはワークグループの管理者は、クラスターをデータ共有と AWS Glue Data Catalog 内のデータベースに関連付け、コンシューマークラスターまたはワークグループのローカルデータベースを作成し、Amazon Redshift コンシューマークラスターまたはワークグループ内のユーザーおよびロールにクエリを開始するアクセス許可を付与できます。以下のステップに従って、クエリのアクセス許可を設定します。

  1. 必要に応じて、Amazon Redshift コンソールで、コンシューマークラスターまたはワークグループとして機能する Redshift クラスターを作成します。クラスターの作成方法については、「クラスターの作成」を参照してください。

  2. AWS Glue Data Catalog コンシューマークラスターまたはワークグループ内のどのデータベースにユーザーがアクセスできるかを一覧表示するには、SHOW DATABASES コマンドを実行します。

    SHOW DATABASES FROM DATA CATALOG [ACCOUNT <account-id>,<account-id2>] [LIKE <expression>]

    これにより、AWS Glue データベースの ARN、データベース名、データ共有に関する情報など、データカタログから利用できるリソースが一覧表示されます。

  3. SHOW DATABASES から得られた AWS Glue データベース ARN を使用して、コンシューマークラスターまたはワークグループにローカルデータベースを作成します。詳細については、「データベースの作成」を参照してください。

    CREATE DATABASE lf_db FROM ARN <lake-formation-database-ARN> WITH [NO] DATA CATALOG SCHEMA [<schema>];
  4. 必要に応じて、データ共有から作成されたデータベースおよびスキーマ参照に対するアクセス許可を、コンシューマークラスターまたはワークグループ内のユーザーおよびロールに付与します。詳細については、「許可」または「取り消し」を参照してください。CREATE USER コマンドで作成されたユーザーは、Lake Formation と共有されているデータ共有内のオブジェクトにはアクセスできないことに注意してください。Redshift と Lake Formation の両方にアクセスできる IAM ユーザーのみが、Lake Formation と共有されているデータ共有にアクセスできます。

    GRANT USAGE ON DATABASE sales_db TO IAM:Bob;

    コンシューマークラスターまたはワークグループの管理者は、データ共有から作成されたデータベース全体に対するアクセス許可のみをユーザーおよびロールに割り当てることができます。場合によっては、データ共有から作成されたデータベースオブジェクトのサブセットに対して、詳細なコントロールが必要になります。

    また、共有オブジェクトの上に遅延バインディングビューを作成し、これらを使用して詳細なアクセス許可を割り当てることもできます。また、プロデューサークラスターまたはワークグループで必要な詳細度で追加のデータ共有を作成するよう検討することもできます。データ共有から作成されたデータベースへのスキーマ参照は、いくつでも作成できます。

  5. データベースユーザーは、SVV_EXTERNAL_TABLES ビューと SVV_EXTERNAL_COLUMNS ビューを使用して、AWS Glue データベース内のすべての共有テーブルまたは列を検索できます。

    SELECT * from svv_external_tables WHERE redshift_database_name = 'lf_db'; SELECT * from svv_external_columns WHERE redshift_database_name = 'lf_db';
  6. データ共有内の共有オブジェクト内のデータをクエリします。

    コンシューマークラスターまたはワークグループ上のコンシューマデータベースおよびスキーマに対するアクセス許可を持つユーザーおよびロールは、任意の共有オブジェクトのメタデータを探索およびナビゲートできます。また、コンシューマークラスターまたはワークグループ内のローカルオブジェクトを探索およびナビゲートすることもできます。これを行うには、JDBC または ODBC ドライバー、または SV_ALL および SV_EXTERNAL ビューを使用します。

    SELECT * FROM lf_db.schema.table;

    SELECT ステートメントは、共有オブジェクトに対してのみ使用できます。ただし、別のローカルデータベース内の共有オブジェクトからデータをクエリすることで、コンシューマークラスターにテーブルを作成できます。

    // Connect to a local cluster database // Create a view on shared objects and access it. CREATE VIEW sales_data AS SELECT * FROM sales_db.public.tickit_sales_redshift WITH NO SCHEMA BINDING; SELECT * FROM sales_data;