使用 AWS CloudFormation管理資料共用 - Amazon Redshift

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

使用 AWS CloudFormation管理資料共用

您可以使用佈建資源的 AWS CloudFormation 堆疊來自動化 AWS 資料共用設定。 CloudFormation 堆疊會在同一 AWS 帳戶中的兩個 Amazon Redshift 叢集之間設定資料共用。因此,您可以在不執行 SQL 陳述式的情況下,啟動資料共用來佈建資源。

堆疊會在您指定的叢集上建立資料共用。資料共用包括資料表和範例唯讀資料。您的其他 Amazon Redshift 叢集可以讀取此資料。

如果您想要透過執行 SQL 陳述式來設定資料清單並授與權限而不使用,開始在 AWS 帳戶中共用 CloudFormation資料,請參閱。共用資料的讀取存取權限 AWS 帳戶

在執行資料共用 CloudFormation 堆疊之前,您必須先使用具有建立 IAM 角色和 Lambda 函數之權限的使用者登入。您還需要在同一個帳戶中使用兩個 Amazon Redshift 叢集。您可以使用其中一個叢集 (生產者)來共用範例資料,使用另一個叢集 (取用者) 來讀取範例資料。這些叢集的主要需求是每個叢集都使用 RA3 節點。如需其他需求,請參閱 在 Amazon Redshift 中使用資料共用時的考量事項

如需開始設定 Amazon Redshift 叢集的詳細資訊,請參閱 Amazon Redshift 佈建叢集。如需使用自動化設定的詳細資訊 CloudFormation,請參閱什麼是 AWS CloudFormation?

重要

在啟動 CloudFormation 堆疊之前,請確定同一帳戶中有兩個 Amazon Redshift 叢集,且叢集使用 RA3 節點。確保每個叢集都有一個資料庫和一個超級使用者。如需詳細資訊,請參閱 CREATE DATABASEsuperuser

若要啟動您的 CloudFormation 堆疊以進行 Amazon Redshift 資料共用:
  1. 按一下啟動 CFN 堆疊,這會將您帶到中的 CloudFormation 服務。 AWS Management Console

    如果出現系統提示,請登入。

    堆疊建立程序會啟動,參考存放在 Amazon S3 中的 CloudFormation 範本檔案。 CloudFormation 模板是 JSON 格式的文本文件,它聲明構成堆棧的 AWS 資源。如需範本的詳細資訊,請參閱瞭解 CloudFormation 範本基礎知識

  2. 選擇下一步以輸入堆疊詳細資料。

  3. 參數底下,為每個叢集輸入下列內容:

    • 您的 Amazon Redshift 叢集名稱,例如 ra3-consumer-cluster

    • 您的資料庫名稱,例如 dev

    • 資料庫使用者的名稱,例如 consumeruser

    我們建議您使用測試叢集,因為堆疊會建立數個資料庫物件。

    選擇下一步

  4. 堆疊選項隨即出現。

    選擇下一步以接受預設設定。

  5. 在 [功能] 下,選擇 [我確認 AWS CloudFormation 可能會建立 IAM 資源]。

  6. 選擇建立堆疊

CloudFormation 使用範本建立 Amazon Redshift 堆疊大約需要 10 分鐘,建立名為的資料指令。myproducer_share堆疊會在堆疊詳細資訊中指定的資料庫中建立資料共用。只有來自該資料庫的物件才能共用。

如果建立堆疊時發生錯誤,請執行下列動作:

  • 請確定您為每個 Redshift 叢集輸入正確的叢集名稱、資料庫名稱和資料庫使用者名稱。

  • 請確定您的叢集具有 RA3 節點。

  • 請確定您已使用有權建立 IAM 角色和 Lambda 函數的使用者登入。如需建立 IAM 角色的相關資訊,請參閱建立 IAM 角色。如需 Λ 函數建立政策的相關資訊,請參閱函數開發

查詢您建立的資料共用

若要使用下列程序,請確定您在每個所述叢集上有執行查詢所需的許可。

查詢您的資料共用:
  1. 使用用戶端工具 (例如 Amazon Redshift 查詢編輯器 v2),Connect 到建立 CloudFormation堆疊時輸入的資料庫上的生產者叢集。

  2. 查詢資料庫。

    SHOW DATASHARES; +------------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------+ | share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account | producer_namespace | +------------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------+ | myproducer_share | 100 | sample_data_dev | myconsumer_db | INBOUND | NULL | true | NULL | producer-acct | your-producer-namespace | +------------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------+

    上述命令會傳回由堆疊建立的資料共用名稱,稱為 myproducer_share。也會傳回與資料共用相關聯的資料庫名稱 (myconsumer_db)。

    複製生產者命名空間識別碼,以便在稍後步驟中使用。

  3. 描述資料共用中的物件。

    DESC DATASHARE myproducer_share; +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+ | producer_account | producer_namespace | share_type | share_name | object_type | object_name | include_new | +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+ | producer-acct | your-producer-namespace | OUTBOUND | myproducer_share | schema | myproducer_schema | true | | producer-acct | your-producer-namespace | OUTBOUND | myproducer_share | table | myproducer_schema.tickit_sales | NULL | | producer-acct | your-producer-namespace | OUTBOUND | myproducer_share | view | myproducer_schema.ticket_sales_view | NULL | +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+

    當您描述資料共用時,其會傳回資料表和檢視的屬性。堆疊會將含有範例資料的資料表和檢視新增至生產者資料庫,例如 tickit_salestickit_sales_view。如需 TICKIT 範例庫的相關資訊,請參閱 範本資料庫

    您不必委派對資料共用執行查詢的許可。堆疊會授予必要許可。

  4. 使用用戶端工具連線至取用者叢集。描述資料共用,指定生產者的命名空間。

    DESC DATASHARE myproducer_share OF NAMESPACE '<namespace id>'; --specify the unique identifier for the producer namespace +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+ | producer_account | producer_namespace | share_type | share_name | object_type | object_name | include_new | +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+ | producer-acct | your-producer-namespace | INBOUND | myproducer_share | schema | myproducer_schema | NULL | | producer-acct | your-producer-namespace | INBOUND | myproducer_share | table | myproducer_schema.tickit_sales | NULL | | producer-acct | your-producer-namespace | INBOUND | myproducer_share | view | myproducer_schema.ticket_sales_view | NULL | +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+
  5. 您可以透過指定資料共用的資料庫和結構描述來查詢資料共用中的資料表。如需詳細資訊,請參閱 使用跨資料庫查詢的範例。以下查詢會從 TICKIT 範例資料庫中的 SALES 資料表傳回銷售和賣家資料。如需詳細資訊,請參閱 SALES 資料表

    SELECT * FROM myconsumer_db.myproducer_schema.tickit_sales_view; +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission | saletime | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | 1 | 1 | 36861 | 21191 | 7872 | 1875 | 4 | 728 | 109.2 | 2008-02-18 02:36:48 | | 2 | 4 | 8117 | 11498 | 4337 | 1983 | 2 | 76 | 11.4 | 2008-06-06 05:00:16 | | 3 | 5 | 1616 | 17433 | 8647 | 1983 | 2 | 350 | 52.5 | 2008-06-06 08:26:17 | | 4 | 5 | 1616 | 19715 | 8647 | 1986 | 1 | 175 | 26.25 | 2008-06-09 08:38:52 | | 5 | 6 | 47402 | 14115 | 8240 | 2069 | 2 | 154 | 23.1 | 2008-08-31 09:17:02 | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+
    注意

    查詢會針對共用結構描述中的檢視執行。您不能直接連線到從資料共用中建立的資料庫。它們是唯讀金鑰。

  6. 若要執行包含彙總的查詢,請使用下列範例。

    SELECT * FROM myconsumer_db.myproducer_schema.tickit_sales ORDER BY 1,2 LIMIT 5; +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission | saletime | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | 1 | 1 | 36861 | 21191 | 7872 | 1875 | 4 | 728 | 109.2 | 2008-02-18 02:36:48 | | 2 | 4 | 8117 | 11498 | 4337 | 1983 | 2 | 76 | 11.4 | 2008-06-06 05:00:16 | | 3 | 5 | 1616 | 17433 | 8647 | 1983 | 2 | 350 | 52.5 | 2008-06-06 08:26:17 | | 4 | 5 | 1616 | 19715 | 8647 | 1986 | 1 | 175 | 26.25 | 2008-06-09 08:38:52 | | 5 | 6 | 47402 | 14115 | 8240 | 2069 | 2 | 154 | 23.1 | 2008-08-31 09:17:02 | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+

    該查詢會從範例 TICKIT 資料傳回銷售和賣方資料。

    如需更多資料共用查詢範例,請參閱 共用資料的讀取存取權限 AWS 帳戶