

 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 中取用者對新資料共用的動作
<a name="writes-consumer-new"></a>

使用 Amazon Redshift，您可以取用其他 AWS 帳戶的資料共用，啟用跨帳戶資料共用和協同合作。資料共用是跨 Amazon Redshift 叢集共用即時資料的安全方法，即使它們位於不同的 AWS 帳戶中也是如此。下列各節提供設定存取、從資料共用建立資料庫、授予物件層級許可，以及查詢共用資料的詳細步驟。

**Topics**
+ [將資料共用與 Amazon Redshift AWS 帳戶 中不同的 建立關聯](writes-associating.md)
+ [在 Amazon Redshift 中從資料共用建立資料庫](writes-creating-database.md)
+ [在 Amazon Redshift 中對取用者使用者和角色授予物件層級許可](writes-granting.md)
+ [在 Amazon Redshift 中查詢資料共用中的資料](writes-querying.md)

# 將資料共用與 Amazon Redshift AWS 帳戶 中不同的 建立關聯
<a name="writes-associating"></a>

使用 Amazon Redshift，您可以將其他 共用的資料共用建立關聯 AWS 帳戶，讓跨組織邊界進行無縫且安全的資料共用。資料共用是可共用的資料庫物件，其中封裝了來自一或多個 Amazon Redshift 資料庫的資料。下列各節示範建立資料共用關聯的程序。

------
#### [ Console ]

身為取用者管理員，您可以將從其他帳戶共用的一或多個資料共用與整個 AWS 帳戶或帳戶中的特定命名空間建立關聯。

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)：// 開啟 Amazon Redshift 主控台。

1. 在導覽功能表中，選擇**資料共用**。資料共用清單頁面會隨即出現。選擇**來自其他帳戶**。

1. 在**來自其他帳戶的資料共用**區段中，選擇您要建立關聯的資料共用，然後選擇**建立關聯**。當顯示 **關聯**資料共用頁面時，選擇下列其中一個關聯類型：
   + 選擇**整個 AWS 帳戶**，將 AWS 帳戶中不同 AWS 區域的所有現有和未來命名空間與資料共用建立關聯。
   + 如果資料共用發佈至 AWS Glue Data Catalog，您只能將資料共用與整個 AWS 帳戶建立關聯。

1. 您可以從這裡選擇**允許的權限**。選擇如下：
   + **唯讀** — 如果您選擇唯讀，則取用者無法使用諸如 UPDATE 或 INSERT 之類的寫入權限，即使這些權限已在生產者上授予與並已授權。
   + **讀取和寫入** — 取用者資料共用使用者將擁有生產者授予和授權的所有權限，包括讀取和寫入。

1. 或者，選擇**特定 AWS 區域和命名空間**，將一或多個 AWS 區域和特定命名空間與資料共用建立關聯。選擇**新增區域**，將特定 AWS 區域和命名空間新增至資料共用。新增** AWS 區域**頁面隨即出現。

1. 選擇 **AWS 區域**。

1. 執行以下任意一項：
   + 選擇**新增所有命名空間**，將此區域中所有現有和未來的命名空間新增至資料共用。
   + 選擇**新增特定命名空間**，將此區域中的一或多個特定命名空間新增至資料共用。
   + 選擇一或多個命名空間，然後選擇**新增 AWS 區域**。

1. 選擇**關聯**。

生產者可以傳回並變更授權的設定，這可能會影響取用者的關聯設定。

 如果您要將資料共用與 Lake Formation 帳戶建立關聯，請前往 Lake Formation 主控台建立資料庫，然後定義資料庫的許可。如需詳細資訊，請參閱《 AWS Lake Formation 開發人員指南》中的[設定 Amazon Redshift 資料共用的許可](https://docs.aws.amazon.com/lake-formation/latest/dg/setup-ds-perms.html)。建立 AWS Glue 資料庫或聯合資料庫後，您可以將查詢編輯器 v2 或任何偏好的 SQL 用戶端與取用者叢集搭配使用來查詢資料。

與資料建立關聯之後，資料共用就會變為可用。

**注意**  
您也可以隨時變更資料共用關聯。將特定 AWS 區域和命名空間的關聯變更為整個 AWS 帳戶時，Amazon Redshift 會使用 AWS 帳戶資訊覆寫特定區域和命名空間資訊。 AWS 帳戶 然後， AWS 中的所有區域和命名空間都可以存取資料共用。

------
#### [ API ]

**注意**  
在生產者管理員授予共用資料庫物件的特定動作之後，執行本節所述步驟，如果資料共用正在與其他帳戶共用，則生產者安全管理員會授予存取權。

取用者安全管理員確定以下內容：
+ 帳戶中的所有命名空間、帳戶中特定區域的命名空間或特定命名空間，是否都可以存取資料共用。
+ 如果命名空間可以存取資料共用，無論這些命名空間是否具有寫入權限。

取用者安全管理員可以使用下列命令建立資料共用的關聯：

```
associate-data-share-consumer
--data-share-arn <value>
--consumer-identifier <value>
[--allow-writes | --no-allow-writes]
```

如需有關命令的詳細資訊，請參閱 [associate-data-share-consumer](https://docs.aws.amazon.com/cli/latest/reference/redshift/associate-data-share-consumer.html)。

當資料共用與命名空間相關聯時，取用者安全管理員必須明確將 `allow-writes` 設定為 true，以允許使用 INSERT 和 UPDATE 命令。如果不這樣做，使用者只能執行讀取作業，例如 SELECT、USAGE 或 EXECUTE 權限。

您可以透過使用不同的值再次呼叫 `associate-data-share-consumer`，以變更資料共用命名空間的關聯。舊關聯會被新關聯覆寫，因此，如果您最初有建立關聯並設定 `allow-writes`，但建立關聯並指定 `no-allow-writes`，或者只是沒有指定值，則會撤銷取用者的寫入權限。

------

# 在 Amazon Redshift 中從資料共用建立資料庫
<a name="writes-creating-database"></a>

使用 Amazon Redshift 即可使用資料共用來建立資料庫，然後從生產者叢集查詢不同資料共用中的資料，以安全地存取即時資料，而不需複製或傳輸資料。下列步驟涵蓋在 Amazon Redshift 環境中設定資料庫的詳細資訊。

------
#### [ Console ]

您必須先從資料共用建立資料庫，才能在資料共用中查詢資料。僅可從指定資料共用中建立一個資料庫。

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/) 開啟 Amazon Redshift 主控台。

1. 在導覽選單上，選擇**叢集**，然後選擇您的叢集。叢集詳細資訊頁面會隨即出現。

1. 選擇**資料共用**。資料共用清單會隨即出現。

1. 在**來自其他叢集的資料共用**區段中，選擇**連線到資料庫**。如需詳細資訊，請參閱[連線至資料庫](connect-database-console.md)。

1. 選擇您要在其中建立資料庫的資料共用，然後選擇**從資料共用建立資料庫**。從資料共用建立資料庫頁面會隨即出現。

1. 在**資料庫名稱**中，指定資料庫名稱。資料庫名稱必須是 1–64 個英數字元 (僅限小寫字母)，且不能是保留字。

1. 選擇**建立**。

建立資料庫之後，您可以查詢資料庫中的資料或執行寫入作業 (如果取用者管理員已授予、授權和關聯)。

------
#### [ API ]

若要以取用者管理員身分共用資料以供讀取，請執行下列步驟：

1. 列出可供您使用的資料共用，並檢視資料共用的內容。如需詳細資訊，請參閱[DESC DATASHARE](r_DESC_DATASHARE.md)及[SHOW DATASHARES](r_SHOW_DATASHARES.md)。

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

   ```
   DESC DATASHARE salesshare OF 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\$1DATASHARES 來檢視資料共用，以及使用 SVV\$1DATASHARE\$1OBJECTS 來檢視資料共用內的物件。

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

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

1. 身為資料庫超級使用者，您可以建立參照資料共用的本機資料庫。如需詳細資訊，請參閱[CREATE DATABASE](r_CREATE_DATABASE.md)。

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

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

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

   您可以透過查詢 [SVV\$1REDSHIFT\$1DATABASES](r_SVV_REDSHIFT_DATABASES.md) 檢視來查看您從資料共用中建立的資料庫。您可以直接連線到這些資料庫，或是連線到取用者叢集上的本機資料庫，並執行跨資料庫查詢，以查詢資料共用資料庫中的資料。
**注意**  
您不能在現有資料共用中建立的資料庫物件頂端建立資料共用。不過，您可以將資料複製到取用者叢集上的個別資料表中，執行所需的任何處理，然後共用已建立的新物件。

   您也可以使用 Amazon Redshift 主控台從資料共用中建立資料共用。如需詳細資訊，請參閱[從資料共用中建立資料庫](query-datashare-console.md#create-database-from-datashare-console)。

------

# 在 Amazon Redshift 中對取用者使用者和角色授予物件層級許可
<a name="writes-granting"></a>

身為取用者管理員，您可以執行下列步驟，對取用者使用者和角色授予物件層級的許可。

------
#### [ SQL ]

如果您在沒有 WITH PERSOMMENCE 的情況下建立資料庫，則只能將從資料共用建立的整個資料庫的權限指派給您的使用者和角色。

```
GRANT USAGE ON DATABASE sales_db TO Bob;
```

```
GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
```

您也可以在共用物件之上建立近期繫結檢視，並使用這些檢視來指派精細的許可。也可以考慮讓生產者叢集以所需的精細程度為您建立其他資料共用。

如果您已使用 WITH PERMISSIONS 建立資料庫，則必須為共用資料庫中的物件指派物件層級許可。只有 USAGE 權限的使用者在獲得額外的物件層級權限之前，不能存取使用 WITH PERMISSIONS 建立的資料庫中的任何物件。

```
GRANT SELECT ON sales_db.public.tickit_sales_redshift to Bob;
```

------

如需有關授予包含多倉儲寫入之許可的詳細資訊，請參閱 [在 Amazon Redshift 中管理資料共用的許可](writes-managing-permissions.md)。

# 在 Amazon Redshift 中查詢資料共用中的資料
<a name="writes-querying"></a>

使用 Amazon Redshift 即可從生產者叢集查詢不同資料共用中的資料，以安全地存取即時資料，而不需複製或傳輸資料。下一節將說明在您的 Amazon Redshift 環境中查詢資料共用。

在取用者資料庫和取用者叢集結構描述上具有許可的使用者和角色，可以探索和瀏覽任何共用物件的中繼資料。他們也可以探索和瀏覽取用者叢集中的本機物件。若要做到這一點，他們會使用 JDBC 或 ODBC 驅動程式或 SVV\$1ALL 和 SVV\$1REDSHIFT 檢視。

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

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

您可以使用完整資格存取資料。如需詳細資訊，請參閱[跨資料庫查詢範例](cross-database_example.md)。

------
#### [ SQL ]

```
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 陳述式。不過，您可以從不同本機資料庫中的共用物件查詢資料，在取用者叢集中建立資料表。

------