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

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

使用 AWS CloudFormation管理資料共用

您可以使用佈建 AWS 資源的 AWS CloudFormation 堆疊來自動化資料共用設定。 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

若要啟動 Amazon Redshift 資料共用的 CloudFormation 堆疊:
  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 等用戶端工具,連線至建立堆疊時 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資料表傳回銷售和銷售者資料。如需詳細資訊,請參閱範本資料庫

    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 帳戶