

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# 在 Amazon Redshift AWS CloudFormation 中使用 進行資料共用入門
<a name="data-sharing-within-account-CF"></a>

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

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

如果您想要在不使用 CloudFormation 的情況下執行 SQL 陳述式來設定資料共用和授予許可，以開始在 AWS 帳戶中共用資料，請參閱 [共用 內資料的讀取存取權 AWS 帳戶](within-account.md)。

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

如需開始設定 Amazon Redshift 叢集的相關資訊，請參閱[開始使用 Amazon Redshift 佈建資料倉儲](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html)。如需使用 CloudFormation 自動化設定的詳細資訊，請參閱[什麼是 AWS CloudFormation？](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)

**重要**  
在啟動 CloudFormation 堆疊之前，請確定您在同一帳戶中有兩個 Amazon Redshift 叢集，而且叢集都使用 RA3 節點。確保每個叢集都有一個資料庫和一個超級使用者。如需詳細資訊，請參閱[CREATE DATABASE](r_CREATE_DATABASE.md)及[超級使用者](r_superusers.md)。

**若要啟動 CloudFormation 堆疊以進行 Amazon Redshift 資料共用：**

1. 按一下[https://console.aws.amazon.com/cloudformation/home?#/stacks/new?stackName=DataShare&templateURL=https://s3.amazonaws.com/redshift-downloads/docs-downloads/DataShare.yml](https://console.aws.amazon.com/cloudformation/home?#/stacks/new?stackName=DataShare&templateURL=https://s3.amazonaws.com/redshift-downloads/docs-downloads/DataShare.yml)，這會將您帶到 AWS 管理主控台中的 CloudFormation 服務。

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

   堆疊建立程序會隨即啟動，並參考儲存在 Amazon S3 中的 CloudFormation 範本檔案。CloudFormation *範本*是 JSON 格式的文字檔案，該檔案會宣告形成堆疊的 AWS 資源。如需 CloudFormation 範本的相關資訊，請參閱[了解範本基本知識](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/gettingstarted.templatebasics.html)。

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

1. 在**參數**底下，為每個叢集輸入下列內容：
   + 您的 Amazon Redshift 叢集名稱，例如 **ra3-consumer-cluster**
   + 您的資料庫名稱，例如 **dev**
   + 資料庫使用者的名稱，例如 **consumeruser**

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

   選擇**下一步**。

1. 堆疊選項隨即出現。

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

1. 在**功能**底下，選擇**我知道 AWS CloudFormation 可能會建立 IAM 資源。**

1. 選擇**建立堆疊**。

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

如果建立堆疊時發生錯誤，請執行下列動作：
+ 請確定您為每個 Redshift 叢集輸入正確的叢集名稱、資料庫名稱和資料庫使用者名稱。
+ 請確定您的叢集具有 RA3 節點。
+ 請確定您已使用有權建立 IAM 角色和 Lambda 函數的使用者登入。如需建立 IAM 角色的相關資訊，請參閱[建立 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)。如需 Λ 函數建立政策的相關資訊，請參閱[函數開發](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html#permissions-user-function)。

## 查詢您建立的資料共用
<a name="data-sharing-within-account-CF-querying"></a>

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

**查詢您的資料共用：**

1. 使用用戶端工具 (例如 Amazon Redshift 查詢編輯器 v2)，連線至建立 CloudFormation 堆疊時輸入的資料庫上的生產者叢集。

1. 查詢資料庫。

   ```
   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`)。

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

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

   ```
   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_sales` 和 `tickit_sales_view`。如需 TICKIT 範例庫的相關資訊，請參閱 [範本資料庫](c_sampledb.md)。

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

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

   ```
   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        |
   +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+
   ```

1. 您可以透過指定資料共用的資料庫和結構描述來查詢資料共用中的資料表。如需詳細資訊，請參閱[跨資料庫查詢範例](cross-database_example.md)。以下查詢會從 TICKIT 範例資料庫中的 SALES 資料表傳回銷售和賣家資料。如需詳細資訊，請參閱[範本資料庫](c_sampledb.md)。

   ```
   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 |
   +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+
   ```
**注意**  
查詢會針對共用結構描述中的檢視執行。您不能直接連線到從資料共用中建立的資料庫。它們是唯讀金鑰。

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

   ```
   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 帳戶](within-account.md)。