プロデューサーとしての AWS Data Exchange データ共有の使用 - Amazon Redshift

Amazon Redshift は、2025 年 11 月 1 日以降、新しい Python UDF の作成をサポートしなくなります。Python UDF を使用する場合は、その日付より前に UDF を作成してください。既存の Python UDF は引き続き通常どおり機能します。詳細については、ブログ記事を参照してください。

プロデューサーとしての AWS Data Exchange データ共有の使用

Amazon Redshift では、プロデューサーは、データ共有を作成および管理することで、ライブデータ製品を AWS Data Exchange と共有できます。

プロデューサー管理者は、以下の手順に従って、Amazon Redshift コンソールで AWS Data Exchange データ共有を管理します。

  1. AWS Data Exchange 上で同じデータを参照するためのデータ共有をクラスター内で作成し、AWS Data Exchangeに対するアクセス権を、作成したデータ共有に付与します。

    クラスターのスーパーユーザーとデータベースの所有者は、データ共有を作成できます。各データ共有は、作成時にデータベースに関連付けられます。そのデータベースのオブジェクトのみがそのデータ共有で共有できます。同じデータベース上に、同じ粒度または異なる粒度のオブジェクトを使用して、複数のデータ共有を作成できます。クラスター上に作成できるデータ共有の数に制限はありません。

    Amazon Redshift コンソールを使用してデータ共有を作成することもできます。詳細については、「データ共有を作成する」を参照してください。

    CREATE DATASHARE ステートメントを実行する際、MANAGEDBY ADX オプションを使用して、データ共有へのアクセスを AWS Data Exchange に暗黙的に付与します。これにより、対象のデータ共有を AWS Data Exchange が管理することを指示します。MANAGEDBY ADX オプションは、新しいデータ共有を作成する場合にのみ使用できます。ALTER DATASHARE ステートメントを使用して、既存のデータ共有を変更しながら MANAGEDBY ADX オプションを追加することはできません。MANAGEDBY ADX オプションを使用して作成したデータ共有に対しては、AWS Data Exchangeのみがアクセスおよび管理できます。

    CREATE DATASHARE salesshare [[SET] MANAGEDBY [=] {ADX} ];
  2. データ共有にオブジェクトを追加します。プロデューサー管理者は、AWS Data Exchangeデータ共有内で使用可能なデータ共有オブジェクトの管理を継続します。

    データ共有にオブジェクトを追加するには、オブジェクトを追加する前にスキーマを追加します。スキーマを追加する場合、Amazon Redshift はその下にすべてのオブジェクトを追加するわけではありません。それらを明示的に追加する必要があります。詳細については、「ALTER DATASHARE」を参照してください。

    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.sales_data_summary_view;

    ALTER DATASHARE を使用して、特定のスキーマ内のスキーマ、テーブル、ビュー、および関数を共有します。スーパーユーザー、データ共有の所有者、またはデータ共有に対する ALTER または ALL 許可を持つユーザーは、データ共有を変更して、それに対するオブジェクトの追加または削除を実行できます。ユーザーは、データ共有に対してオブジェクトの追加または削除を行う許可を持っている必要があります。ユーザーは、オブジェクトの所有者である、またはオブジェクトに対する SELECT、USAGE、もしくは ALL 許可を持っている必要もあります。

    スキーマを指定して作成された新しいテーブル、ビュー、または SQL ユーザー定義関数 (UDF) をデータ共有に追加するには、INCLUDENEW 句を使用します。データ共有とスキーマの各ペアについて、このプロパティを変更できるのはスーパーユーザーのみです。

    ALTER DATASHARE salesshare ADD SCHEMA PUBLIC; ALTER DATASHARE salesshare SET INCLUDENEW = TRUE FOR SCHEMA PUBLIC;

    Amazon Redshift コンソールを使用して、データ共有でオブジェクトを追加または削除することもできます。詳細については、「データ共有にデータ共有オブジェクトを追加する」、「データ共有からのデータ共有オブジェクトの削除」、および「AWS Data Exchange データ共有の編集」を参照してください。

  3. データ共有へのアクセスを AWS Data Exchange に対し承認するには、以下のいずれかを実行します。

    • aws redshift authorize-data-share API で ADX キーワードを使用して、データ共有へのアクセスを AWS Data Exchange に対し明示的に許可します。これにより、AWS Data Exchangeはサービスアカウント内のデータ共有を認識できるようになり、コンシューマーのデータ共有への関連付けを管理することが可能になります。

      aws redshift authorize-data-share --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare --consumer-identifier ADX

      API の AuthorizeDataShare および DeauthorizeDataShare で条件付きキー ConsumerIdentifier を使用すると、AWS Data Exchangeによる (IAM ポリシー内の) これら 2 つの API への呼び出しを、明示的に許可または拒否できます。

      JSON
      { "Version": "2012-10-17" , "Statement": [ { "Sid": "VisualEditor0", "Effect": "Deny", "Action": [ "redshift:AuthorizeDataShare", "redshift:DeauthorizeDataShare" ], "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { "redshift:ConsumerIdentifier": "ADX" } } } ] }
    • Amazon Redshift コンソールを使用して、AWS Data Exchange データ共有に関する認可を許可または削除します。詳細については、「データ共有の承認と承認の取り消し」を参照してください。

    • オプションで、データ共有を AWS Data Exchange データセットにインポートするときの AWS Data Exchange データ共有へのアクセスを暗黙的に認可することもできます。

    AWS Data Exchange データ共有へのアクセス権限を削除するには、aws redshift deauthorize-data-share(API) のオペレーションにおいてキーワード ADX を指定します。これにより、サービスアカウント内のデータ共有を認識することと、データ共有からの関連付け削除の管理を行うことを AWS Data Exchange に許可します。

    aws redshift deauthorize-data-share --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare --consumer-identifier ADX
  4. クラスターで作成されたデータ共有を一覧表示し、データ共有の内容を調べます。

    次の例は、SalesShare という名前のデータ共有の情報を表示します。詳細については、「DESC DATASHARE」および「SHOW DATASHARES」を参照してください。

    DESC DATASHARE salesshare; producer_account | producer_namespace | share_type | share_name | object_type | object_name | include_new -------------------+--------------------------------------+------------+------------+-------------+--------------------------------+------------------- 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_users_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_venue_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_category_redshift| 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_date_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_event_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_listing_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_sales_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | schema | public | t 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | view | public.sales_data_summary_view |

    次の例は、プロデューサークラスター内のアウトバウンドデータ共有を表示します。

    SHOW DATASHARES LIKE 'sales%';

    出力は次の例のようになります。

    share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account | producer_namespace -----------+--------------+-----------------+-------------------+------------+---------------------+----------------------+-----------+------------------+--------------------------------------- salesshare | 100 | dev | | OUTBOUND | 2020-12-09 02:27:08 | True | | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d

    詳細については、「DESC DATASHARE」および「SHOW DATASHARES」を参照してください。

    SVV_DATASHARESSVV_DATASHARE_CONSUMERS、および SVV_DATASHARE_OBJECTS を使用して、データ共有、そのデータ共有内のオブジェクト、およびデータ共有のコンシューマーを表示することもできます。

  5. データ共有を削除します。他の AWS アカウント と共有している AWS Data Exchange データ共有は、DROP DATASHARE ステートメントを使用して削除しないことをお勧めします。これらのアカウントはデータ共有へのアクセス権を失います。このアクションを元に戻すことはできません。これは、AWS Data Exchangeにおけるデータ製品の提供規約に違反する可能性があります。AWS Data Exchange のデータ共有を削除する場合は、「DROP DATASHARE の使用に関する注意事項」を参照してください。

    次の例では、SalesShare という名前のデータ共有を削除します。

    DROP DATASHARE salesshare; ERROR: Drop of ADX-managed datashare salesshare requires session variable datashare_break_glass_session_var to be set to value '620c871f890c49'

    AWS Data Exchange データ共有の削除を許可するには、datashare_break_glass_session_var 変数を設定した上で、DROP DATASHARE ステートメントを再度実行します。AWS Data Exchange のデータ共有を削除する場合は、「DROP DATASHARE の使用に関する注意事項」を参照してください。

    Amazon Redshift コンソールを使用してデータ共有を削除することもできます。詳細については、「アカウント内で作成された AWS Data Exchange データ共有の削除」を参照してください。

  6. ALTER DATASHARE コマンドを使用すると、データ共有から任意の時点でオブジェクトを削除できます。REVOKE USAGE ON を使用すると、特定のコンシューマーについて、データ共有への許可を取り消すことができます。このコマンドは、データ共有内にあるオブジェクトの USAGE 許可を取り消し、すべてのコンシューマークラスターへのアクセスを即座に停止します。アクセス許可が取り消されたあとは、データベースやテーブルに関するものを含め、データ共有およびメタデータを一覧表示するためのクエリは、共有されたオブジェクトを返さなくなります。

    ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;

    Amazon Redshift コンソールを使用して、データ共有を編集することもできます。詳細については、「AWS Data Exchange データ共有の編集」を参照してください。

  7. AWS Data Exchangeデータ共有で、GRANT USAGE を付与または取り消す。AWS Data Exchangeデータ共有では、GRANT USAGE を付与または取り消すことはできません。次に、AWS Data Exchange が管理するデータ共有への GRANT USAGE 許可が AWS アカウント に付与された場合に発生する、エラーの例を示します。

    CREATE DATASHARE salesshare MANAGEDBY ADX;
    GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '012345678910'; ERROR: Permission denied to add/remove consumer to/from datashare salesshare. Datashare consumers are managed by ADX.

    詳細については「GRANT」または「REVOKE」を参照してください。

プロデューサー管理者は、以下の手順に従って、AWS Data Exchange コンソールでデータ共有製品を作成および公開します。

  • AWS Data Exchange データ共有が作成されると、プロデューサーが新しいデータセットを作成し、アセットのインポートとリビジョンの作成を行って、新しい製品を作成して公開します。

    データセットの作成には、Amazon Redshift コンソールを使用します。詳細については、「AWS Data Exchange でのデータセットの作成」を参照してください。

    詳細については、「Providing data products on AWS Data Exchange」を参照してください。