在 上共用授權的 Amazon Redshift 資料 AWS Data Exchange - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 上共用授權的 Amazon Redshift 資料 AWS Data Exchange

建立 AWS Data Exchange 資料共用並將其新增至 AWS Data Exchange 產品時,供應商可以在 Amazon Redshift 中授權資料,供消費者在擁有作用中 AWS Data Exchange 訂閱時在 Amazon Redshift 中探索、訂閱和查詢 up-to-date資料。

將 AWS Data Exchange 資料共用新增至 AWS Data Exchange 產品後,消費者在訂閱啟動時會自動存取產品的資料共用,並在其訂閱處於作用中狀態時保留其存取權。

以生產者身分使用 AWS Data Exchange 資料共用

使用 Amazon Redshift,您可以透過建立和管理資料共用,以生產者 AWS Data Exchange 身分與 共用即時資料產品。

如果您是生產者叢集管理員,請依照下列步驟在 Amazon Redshift 主控台上管理 AWS Data Exchange 資料共用:

  1. 在叢集中建立資料共用,以便在 上共用資料, AWS Data Exchange 並授予 AWS Data Exchange 對資料共用的存取權。

    叢集超級使用者和資料庫擁有者可以建立資料共用。每個資料共用都會在建立期間與資料庫相關聯。只有來自該資料庫的物件才能在該資料共用中共用。可以在具有相同或不同物件細微程度的相同資料庫上建立多個資料共用。可以在叢集中建立的資料共用數量不限。

    您也可以使用 Amazon Redshift 主控台建立資料共用。如需詳細資訊,請參閱建立資料共用

    使用 MANAGEDBYADX選項,在執行 CREATEDATASHARE陳述式 AWS Data Exchange 時隱含授予對 的資料共用存取權。這表示 AWS Data Exchange 管理此資料共用。您只能在建立新的資料共用時使用 MANAGEDBYADX選項。您不能使用 ALTERDATASHARE陳述式來修改現有的資料共用以新增 MANAGEDBYADX選項。使用 MANAGEDBYADX選項建立資料共用後, 只能 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;

    使用 ALTERDATASHARE來共用指定結構描述中的結構描述、資料表、檢視和函數。超級使用者、資料共用擁有者或擁有資料共用ALTER或ALL許可的使用者,可以變更資料共用,以新增物件或從中移除物件。使用者應具有在資料共用中新增或移除物件的許可。使用者也應是物件的擁有者SELECT,或擁有物件的 USAGE、 或 ALL許可。

    使用 INCLUDENEW子句將在指定結構描述中建立的任何新資料表、檢視或SQL使用者定義函數 (UDFs) 新增至資料共用。只有超級使用者可以為每個「資料共用-結構描述」配對修改此屬性。

    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 Data Exchange 使用 aws redshift authorize-data-share 中的ADX關鍵字明確授權 的資料共用存取權API。這允許 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

      您可以使用 AuthorizeDataShareConsumerIdentifier 的條件式金鑰DeauthorizeDataShareAPIs,明確允許或拒絕 對IAM政策APIs中的兩者 AWS Data Exchange 進行呼叫。

      { "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-shareAPI操作中使用 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 DATASHARESHOW 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 DATASHARESHOW DATASHARES

    您也可以使用 SVV_DATASHARESSVV_DATASHARE_CONSUMERSSVV_DATASHARE_OBJECTS 來檢視資料共用、資料共用中的物件,以及資料共用取用者。

  5. 捨棄資料共用。建議您不要刪除 AWS 帳戶 使用 DROPDATASHARE陳述式與其他 共用 AWS Data Exchange 的資料共用。這些帳戶將會失去資料共用的存取權。此動作不可復原。這可能會違反 中的資料產品優惠條款 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 變數,然後再次執行DROPDATASHARE陳述式。如果您想要刪除 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. 授予或撤銷GRANTUSAGE AWS Data Exchange 資料共用。您無法授予或撤銷GRANTUSAGE AWS Data Exchange 資料共用。下列範例顯示為 AWS Data Exchange 管理 AWS 帳戶 的資料共用授予 GRANTUSAGE許可時的錯誤。

    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.

    如需詳細資訊,請參閱 GRANTREVOKE

如果您是生產者叢集管理員,請依照下列步驟在 AWS Data Exchange 主控台上建立和發佈資料共用產品:

以取用者身分使用 AWS Data Exchange 資料共用

使用 Amazon Redshift,您可以從 存取和分析資料集, AWS Data Exchange 而不必儲存或管理資料複本。

如果您是消費者,請依照下列步驟探索包含 AWS Data Exchange 資料共用的資料產品,並查詢 Amazon Redshift 資料:

  1. 在 AWS Data Exchange 主控台上,探索並訂閱包含資料共用 AWS Data Exchange 的資料產品。

    訂閱啟動後,您可以存取已授權的 Amazon Redshift 資料,這些資料會以資產的形式匯入包含 AWS Data Exchange 資料共用的資料集。

    如需如何開始使用包含 AWS Data Exchange 資料共用的資料產品的詳細資訊,請參閱 上的訂閱資料產品 AWS Data Exchange

  2. 如有需要,在 Amazon Redshift 主控台上,建立 Amazon Redshift 叢集。

    如需如何建立叢集的資訊,請參閱建立叢集

  3. 列出可供您使用的資料共用,並檢視資料共用的內容。如需詳細資訊,請參閱 DESC DATASHARESHOW DATASHARES

    下列範例會顯示指定生產者命名空間的輸入資料共用資訊。當您以取用者叢集管理員DESCDATASHARE身分執行 時,您必須指定 ACCOUNT和 NAMESPACE選項,以檢視傳入資料共用。

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

    只有叢集超級使用者才能執行此動作。您也可以使用 SVV_DATASHARES 檢視資料共用,並使用 SVV_DATASHARE_OBJECTS 檢視資料共用中的物件。

    下列範例顯示取用者叢集中的輸入資料共用。

    SHOW DATASHARES LIKE 'sales%'; share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account | producer_namespace ------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+-------------------------------------- salesshare | | | | INBOUND | | t | | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
  4. 建立參照資料共用的本機資料庫。您必須指定 ACCOUNT和 NAMESPACE選項,才能為 AWS Data Exchange 資料共用建立本機資料庫。如需詳細資訊,請參閱CREATE DATABASE

    CREATE DATABASE sales_db FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';

    如果您想要更精細地控制對本機資料庫中物件的存取,請在建立資料庫時使用 WITHPERMISSIONS子句。這可讓您在步驟 6 中為資料庫中的物件授予物件層級權限。

    CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';

    您可以透過查詢 SVV_REDSHIFT_DATABASES 檢視來查看您從資料共用中建立的資料庫。您可以直接連線至這些資料庫,也可以連線至取用者叢集上的本機資料庫,並執行跨資料庫查詢,以查詢來自資料共用資料庫的資料。您不能在現有資料共用中建立的資料庫物件頂端建立資料共用。不過,您可以將資料複製到取用者叢集上的個別資料表中,執行所需的任何處理,然後共用已建立的新物件。

    您也可以使用 Amazon Redshift 主控台從資料共用中建立資料共用。如需詳細資訊,請參閱從資料共用中建立資料庫

  5. (選擇性) 建立外部結構描述,以參照取用者叢集上匯入之取用者資料庫中的特定結構描述,並對其指派精細的許可。如需詳細資訊,請參閱CREATE EXTERNAL SCHEMA

    CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';
  6. 視需要,將從資料共用建立的資料庫和結構描述參照的許可授予使用者叢集中的使用者或角色。如需詳細資訊,請參閱 GRANTREVOKE

    GRANT USAGE ON DATABASE sales_db TO Bob;
    GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;

    如果您在沒有 WITH 的情況下建立資料庫PERMISSIONS,您只能將從資料共用建立的整個資料庫的許可指派給您的使用者和角色。在某些情況下,您需要更精細地控制從資料共用中建立的資料庫物件子集。如果是這樣,您可以建立指向資料共用中特定結構描述的外部結構描述參考 (如上一個步驟所述),並在結構描述層級上提供精細的許可。

    您也可以在共用物件之上建立近期繫結檢視,並使用這些檢視來指派精細的許可。也可以考慮讓生產者叢集以所需的精細程度為您建立其他資料共用。您可以依需要,為從資料共用中建立的資料庫建立盡可能多的結構描述參照。

    如果您在步驟 4 WITHPERMISSIONS中使用 建立資料庫,則必須為共用資料庫中的物件指派物件層級許可。僅具有 USAGE 許可的使用者在獲得其他物件層級許可WITHPERMISSIONS之前,無法存取使用 建立的資料庫中的任何物件。

    GRANT SELECT ON sales_db.public.tickit_sales_redshift to Bob;
  7. 查詢資料共用中共用物件的資料。

    在取用者資料庫和取用者叢集結構描述上具有許可的使用者和角色,可以探索和瀏覽任何共用物件的中繼資料。他們也可以探索和瀏覽取用者叢集中的本機物件。若要這麼做,他們會使用 JDBC或 ODBC 驅動程式、 SHOW 命令或 SVV_ALL 和 SVV_REDSHIFT 檢視。

    生產者叢集在每個結構描述中可能會有多個資料庫、資料表和檢視的結構描述。取用者端的使用者只能看到透過資料共用提供的物件子集。這些使用者無法從生產者叢集看到整個中繼資料。此方法有助於透過資料共用提供精細的中繼資料安全控制

    您可以繼續連線到本機叢集資料庫。但是現在,您也可以使用三部分 database.schema.table 表示法,從資料共用中建立的資料庫和結構描述中讀取。您可以執行跨越任何和所有可見資料庫的查詢。這些資料庫可以是叢集上的本機資料庫,也可以是從資料共用建立的資料庫。或者,您可以直接連線至這些取用者資料庫,並針對具有部分記號的共用物件執行查詢。

    您可以使用完整資格存取資料。如需詳細資訊,請參閱跨資料庫查詢範例

    SELECT * FROM sales_db.public.tickit_sales_redshift ORDER BY 1,2 LIMIT 5; salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission | saletime ---------+--------+----------+---------+---------+--------+---------+-----------+------------+--------------------- 1 | 1 | 36861 | 21191 | 7872 | 1875 | 4 | 728.00 | 109.20 | 2008-02-18 02:36:48 2 | 4 | 8117 | 11498 | 4337 | 1983 | 2 | 76.00 | 11.40 | 2008-06-06 05:00:16 3 | 5 | 1616 | 17433 | 8647 | 1983 | 2 | 350.00 | 52.50 | 2008-06-06 08:26:17 4 | 5 | 1616 | 19715 | 8647 | 1986 | 1 | 175.00 | 26.25 | 2008-06-09 08:38:52 5 | 6 | 47402 | 14115 | 8240 | 2069 | 2 | 154.00 | 23.10 | 2008-08-31 09:17:02

    您只能在共用物件上使用SELECT陳述式。不過,您可以從不同本機資料庫中的共用物件查詢資料,在取用者叢集中建立資料表。

    除了查詢之外,取用者還可以在共用物件上建立檢視。僅支援近期繫結檢視或具體化視觀表。Amazon Redshift 不支援共用資料的一般檢視。取用者建立的檢視可跨越多個本機資料庫或從資料共用建立的資料庫。如需詳細資訊,請參閱CREATE VIEW

    // 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;