プロデューサーとして Lake Formation 管理のデータ共有を使用する
Amazon Redshift では、AWS Lake Formation データ共有を介して共有されるデータにアクセスして分析できます。AWS Lake Formation データ共有を使用すると、基盤データをコピーまたは移動することなく、AWS アカウントと Amazon Redshift クラスター間で安全なデータ共有が可能になります。
AWS Lake Formation でデータを共有すると、Amazon Redshift データ共有の AWS Lake Formation アクセス許可を一元的に定義し、データ共有内のオブジェクトへのユーザーアクセスを制限できます。
Amazon Redshift では、 AWS Lake Formation マネージドデータ共有をプロデューサーとして使用して、AWS アカウントと Amazon Redshift クラスター間でライブデータを安全に共有できます。Lake Formation マネージドデータ共有は、Amazon Redshift クラスターのライブデータを他の AWS アカウントやサービスと共有できるオブジェクトです。
プロデューサークラスターまたはワークグループの管理者は、以下のステップに従って、Lake Formation とデータ共有を行います。
-
クラスター内にデータ共有を作成し、AWS Lake Formation にデータ共有に対するアクセス権を付与します。
クラスターのスーパーユーザーとデータベースの所有者は、データ共有を作成できます。各データ共有は、作成時にデータベースに関連付けられます。そのデータベースのオブジェクトのみがそのデータ共有で共有できます。同じデータベース上に、同じ粒度または異なる粒度のオブジェクトを使用して、複数のデータ共有を作成できます。クラスター上に作成できるデータ共有の数に制限はありません。
CREATE DATASHARE salesshare;
-
データ共有にオブジェクトを追加します。プロデューサークラスターまたはワークグループの管理者は、使用可能なデータ共有オブジェクトの管理を継続します。データ共有にオブジェクトを追加するには、オブジェクトを追加する前にスキーマを追加します。スキーマを追加する場合、Amazon Redshift はその下にすべてのオブジェクトを追加するわけではありません。それらを明示的に追加する必要があります。詳細については、「データ共有の変更」を参照してください。
ALTER DATASHARE salesshare ADD SCHEMA PUBLIC; ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift; ALTER DATASHARE salesshare ADD ALL TABLES IN SCHEMA PUBLIC;
データ共有にビューを追加することもできます。標準ビュー、遅延バインディングビューおよびマテリアライズドビューがサポートされます。
CREATE VIEW public.sales_data_summary_view AS SELECT * FROM public.tickit_sales_redshift; ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
ALTER DATASHARE を使用して、特定のスキーマ内のスキーマ、テーブル、ビューを共有します。スーパーユーザー、データ共有の所有者、またはデータ共有に対する ALTER または ALL 許可を持つユーザーは、データ共有を変更して、それに対するオブジェクトの追加または削除を実行できます。データベースユーザーは、オブジェクトの所有者であるか、またはオブジェクトに対する SELECT、USAGE、もしくは ALL 許可を持っている必要があります。
スキーマを指定して作成された新しいテーブル、ビューをデータ共有に追加するには、INCLUDENEW 句を使用します。データ共有とスキーマの各ペアについて、このプロパティを変更できるのはスーパーユーザーのみです。
ALTER DATASHARE salesshare ADD SCHEMA PUBLIC; ALTER DATASHARE salesshare SET INCLUDENEW = TRUE FOR SCHEMA PUBLIC;
-
Lake Formation 管理者アカウントにデータ共有へのアクセスを許可します。
GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '012345678910' VIA DATA CATALOG;
使用を取り消すには、次のコマンドを使用します。
REVOKE USAGE ON DATASHARE salesshare FROM ACCOUNT '012345678910' VIA DATA CATALOG;
-
aws redshift authorize-data-share
API オペレーションを使用して Lake Formation のデータ共有へのアクセスを許可します。これにより、Lake Formation はサービスアカウント内のデータ共有を認識して、コンシューマーのデータ共有への関連付けを管理できます。aws redshift authorize-data-share --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare --consumer-identifier {"DataCatalog/<consumer-account-id>"}
Lake Formation 管理のデータ共有から認可を削除するには、
aws redshift deauthorize-data-share
API オペレーションを使用します。これにより、AWS Lake Formation がサービスアカウント内のデータ共有を認識できるようになり、認可を削除することができます。aws redshift deauthorize-data-share --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare --consumer-identifier {"DataCatalog/<consumer-account-id>"}
プロデューサークラスターまたはワークグループの管理者がコンシューマークラスターまたはワークグループとデータを共有する必要がなくなったと判断した場合は、いつでも、DROP DATASHARE を使用してデータ共有を削除し、データ共有の承認を解除し、またはデータ共有アクセス許可を取り消すことができます。Lake Formation 内に関連付けられたアクセス許可とオブジェクトは自動的には削除されません。
DROP DATASHARE salesshare;
Lake Formation アカウントにデータ共有の管理を許可すると、Lake Formation 管理者はデータ共有を見つけ、データカタログの ARN にデータ共有を関連付け、データ共有にリンクする AWS Glue Data Catalog 内にデータベースを作成できます。AWS CLI を使用してデータ共有を関連付けるには、associate-data-share-consumer コマンドを使用します。AWS リージョン 全体でデータ共有を共有するには、
associate-data-share-consumer
コマンドで--region
パラメータを指定するか、AWS コンソールを使用してデータコンシューマーを選択します。次の例は、Lake Formation 管理のデータ共有をリージョン間で共有する方法を示します。aws redshift associate-data-share-consumer --region <region-1> --data-share-arn 'arn:aws:redshift:us-east-1:12345678912:datashare:035c45ea-61ce-86f0-8b75-19ac6102c3b7/sample_share' --consumer-arn 'arn:aws:glue:<region-1>:111912345678:catalog'
Lake Formation 管理者は、データ共有内のオブジェクトが Lake Formation 内のオブジェクトにどのようにマッピングされるかを定義するローカルリソースを作成する必要もあります。データ共有の検出とローカルリソースの作成の詳細については、「Amazon Redshift データ共有でのデータに対するアクセス許可の管理」を参照してください。