使用AWS Data Exchange數據庫作為生產者 - Amazon Redshift

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

使用AWS Data Exchange數據庫作為生產者

如果您是創建者羣集管理員,請按照以下步驟管理AWS Data Exchange在 Amazon Redshift 控制台上的數據碼:

  1. 在集羣中創建數據庫以在AWS Data Exchange並授予對AWS Data Exchange添加到數據庫中。

    羣集超級用户和數據庫所有者可以創建數據源。在創建過程中,每個數據保護都與數據庫相關聯。只有來自該數據庫的對象才能在該數據庫中共享。可以在具有相同或不同粒度的對象在同一數據庫上創建多個數據源。您可以在羣集上建立的資料庫數量沒有限制。

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

    使用管理 ADX 選項隱式授予對數據保護的訪問權限AWS Data Exchange運行創建數據保護語句時。這表示AWS Data Exchange管理此數據保護。您只能在建立新資料保護時使用 MANAGEDBY ADX 選項。不能使用 ALTER 數據保護語句修改現有數據保護以添加管理 ADX 選項。使用管理 ADX 選項創建數據保護後,只有AWS Data Exchange可以訪問和管理數據保護。

    CREATE DATASHARE salesshare [[SET] MANAGEDBY [=] {ADX} ];
  2. 將物件新增至資料庫。生產者管理員繼續管理AWS Data Exchange數據保存。

    要將對象添加到數據保護,請在添加對象之前添加架構。當您添加架構時,Amazon Redshift 不會在其下添加所有對象。您必須明確地將其新增。如需詳細資訊,請參閱 ALTER DATABASE

    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 或全部權限。

    使用 INPLUDENEW 子句可以將在指定方案中創建的所有新表、視圖或 SQL 用户定義函數 (UDF) 添加到數據保護中。只有超級用户可以為每個數據庫架構對更改此屬性。

    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通過使用ADX在中的關鍵字aws redshift authorize-data-shareAPI。這使得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

      您可以使用條件鍵ConsumerIdentifier(針對)AuthorizeDataShareDeauthorizeDataShare明確允許或拒絕的 APIAWS Data Exchange來調用 IAM 策略中的兩個 API。

      { "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數據庫,請使用ADX在中的關鍵字aws redshift deauthorize-data-shareAPI 操作。通過這樣做,您允許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 DESC DATABASE顯示資料庫

    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 DESC DATABASE顯示資料庫

    您也可以使用SVV_ 數據庫SVV_ 數據庫 _ 消費者,以及SVV_ 數據庫 _ 對象以查看數據碼、數據保護中的對象以及數據保護使用者。

  5. 刪除資料庫。我們建議您不要刪除AWS Data Exchange數據保護共享到其他AWS 帳戶使用 DROP 數據保存語句。這些帳户將失去資料保護的存取權。此動作不可復原。這可能會違反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數據保護,請設置數據庫中斷佈局變量,然後再次運行 DROP 數據保護語句。如果您要刪除AWS Data Exchange資料保存,請參DROP DATASHARE 使用須知

    您也可以使用 Amazon Redshift 主控台刪除資料庫。如需詳細資訊,請參閱 刪除AWS Data Exchange在您的帳户中建立的資料

  6. 使用 ALTER DATASHARE 可以從數據庫中的任意點從數據庫中刪除對象。使用 REVOKE 使用 ON 可撤消對某些使用者對數據保護的權限。它撤消對數據保護中對象的 USAGE 權限,並立即停止對所有使用者羣集的訪問。在取消訪問權限後,列出數據碼和元數據查詢(如列出數據庫和表)不會返回共享對象。

    ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;

    您也可以使用 Amazon Redshift 主控台來編輯數據庫。如需詳細資訊,請參閱 編輯AWS Data Exchange數據庫

  7. 授予或撤銷授權使用AWS Data Exchange數據庫。您無法授與或撤銷授權使用AWS Data Exchange數據保存。下面的示例顯示了授予授權使用權限時的錯誤AWS 帳戶對於數據保護,AWS Data Exchange管理。

    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主控台: