

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

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

# 跨 共用資料 AWS 帳戶
<a name="across-account"></a>

您可以在 AWS 帳戶之間共用資料以供讀取。在 AWS 帳戶 工作之間共用資料類似於在帳戶內共用資料。不同之處在於，在 AWS 帳戶之間共用資料時需要雙向交握。生產者帳戶管理員可以授權取用者帳戶存取資料共用，也可以選擇不授權任何存取權。若要使用授權的資料共用，取用者帳戶管理員可以與資料共用建立關聯。管理員可以將資料共用與整個 AWS 帳戶 或消費者帳戶中的特定叢集建立關聯，或拒絕資料共用。如需在帳戶內共用資料的相關資訊，請參閱 [共用 內資料的讀取存取權 AWS 帳戶](within-account.md)。

資料共用的資料取用者可以是相同帳戶中或不同 AWS 帳戶中的命名空間。您不需要建立單獨的資料共用，即可在帳戶中和帳戶之間共用。

對於跨帳戶資料共用，生產者和取用者叢集都必須加密。

與 共用資料時 AWS 帳戶，生產者管理員會以實體 AWS 帳戶 身分與 共用。取用者管理員可以決定取用者帳戶中的哪些命名空間可以存取資料共用。

**Topics**
+ [生產者管理員動作](producer-cluster-admin.md)
+ [取用者帳戶管理員動作](consumer-account-admin.md)
+ [取用者管理員動作](consumer-cluster-admin.md)

# 生產者管理員動作
<a name="producer-cluster-admin"></a>

您可以使用 Amazon Redshift 在生產者叢集上執行管理任務，以管理資料擷取和負載處理。

**如果您是生產者管理員或資料庫擁有者**，請依照下列步驟執行：

1. 在叢集中建立資料共用，並將資料共用物件新增至資料共用。如需如何建立資料共用和將資料共用物件新增至資料共用的詳細步驟，請參閱 [共用 內資料的讀取存取權 AWS 帳戶](within-account.md)。如需有關 CREATE DATASHARE 和 ALTER DATASHARE 的資訊，請參閱 [CREATE DATASHARE](r_CREATE_DATASHARE.md) 和 [ALTER DATASHARE](r_ALTER_DATASHARE.md)。

   下列範例會將不同的資料共用物件加入至資料共用 `salesshare`。

   ```
   -- Add schema to datashare
   ALTER DATASHARE salesshare ADD SCHEMA PUBLIC;
   
   -- Add table under schema to datashare
   ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
   
   -- Add view to datashare 
   ALTER DATASHARE salesshare ADD TABLE public.sales_data_summary_view;
   
   -- Add all existing tables and views under schema to datashare (does not include future table)
   ALTER DATASHARE salesshare ADD ALL TABLES in schema public;
   ```

   您也可以使用 Amazon Redshift 主控台建立或編輯資料共用。如需詳細資訊，請參閱[建立資料共用](datashare-creation.md#create-datashare-console)及[編輯在您帳戶中建立的資料共用](manage-datashare-existing-console.md#edit-datashare-console)。

1. 委派在資料共用上操作的許可。如需詳細資訊，請參閱 [GRANT](r_GRANT.md) 或 [REVOKE](r_REVOKE.md) 。

   下列範例政策會授予許給 `salesshare` 上的 `dbuser`。

   ```
   GRANT ALTER, SHARE ON DATASHARE salesshare TO dbuser;
   ```

   叢集超級使用者和資料共用的擁有者可以對其他使用者授與或撤銷資料共用的修改許可。

1. 在資料共用中新增或移除取用者。下列範例會將 AWS 帳戶 ID 新增至 `salesshare`。如需詳細資訊，請參閱 [GRANT](r_GRANT.md) 或 [REVOKE](r_REVOKE.md) 。

   ```
   GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '123456789012';
   ```

   在 GRANT 陳述式中，您只能將許可授予一個資料取用者。

   叢集超級使用者和資料共用物件的擁有者或在資料共用上擁有 SHARE 許可的使用者，都可以在資料共用中新增或移除將取用者。為了這麼做，他們會使用 GRANT USAGE 或 REVOKE USAGE。

   您也可以使用 Amazon Redshift 主控台在資料共用中新增或移除資料取用者。如需詳細資訊，請參閱[將資料取用者新增至資料共用](datashare-creation.md#add-data-consumer-console)及[從資料共用中移除資料取用者](manage-datashare-existing-console.md#remove-data-consumer-console)。

1. （選用） AWS 帳戶 如果您不想再與消費者共用資料，請從 撤銷對資料共用的存取權。

   ```
   REVOKE USAGE ON DATASHARE salesshare FROM ACCOUNT '123456789012';
   ```

**如果您是生產者帳戶管理員**，請依照下列步驟執行：

授予 用量後 AWS 帳戶，資料共用狀態為 `pending_authorization`。生產者帳戶管理員應該使用 Amazon Redshift 主控台授權資料共用，並選擇資料取用者。

登入 https：//[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。然後選擇要授權存取資料共用或從中移除授權的資料取用者。獲授權的資料取用者會收到對資料共用採取動作的通知。如果您要將命名空間新增為資料取用者，則不必執行授權。授權資料取用者之後，他們就可以存取資料共用物件，並建立取用者資料庫來查詢資料。如需詳細資訊，請參閱[授予或移除資料共用的授權](authorize-datashare-console.md)。

## 在不同帳戶之間共用資料的寫入許可
<a name="within-account-multi-warehouse-consumer-associate"></a>

使用 Amazon Redshift，您可以跨 AWS 帳戶共用資料並授予寫入許可，從而實現團隊或組織之間的協作和資料共用。跨帳戶資料共用可讓您建立資料提供者帳戶，以建立和管理資料庫、結構描述和資料表，然後可以安全地與資料取用者帳戶共用。下列各節示範在 Amazon Redshift 中設定跨帳戶資料共用和授予寫入存取權的程序。

# 取用者帳戶管理員動作
<a name="consumer-account-admin"></a>

透過 Amazon Redshift，您可以管理取用者帳戶，並控制其對資料倉儲資源的存取。

**如果您是取用者帳戶管理員**，請依照下列步驟執行：

若要將從其他帳戶共用的一或多個資料共用與您帳戶中的整個 AWS 帳戶 或特定命名空間建立關聯，請使用 Amazon Redshift 主控台。

登入 https：//[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)。然後，將從其他帳戶共用的一或多個資料共用與您帳戶中的整個 AWS 帳戶 或特定命名空間建立關聯。如需詳細資訊，請參閱[將資料共用與 Amazon Redshift AWS 帳戶 中不同的 建立關聯](writes-associating.md)。

與 AWS 帳戶 或特定命名空間建立關聯後，資料共用即可供使用。您也可以隨時變更資料共用關聯。將個別命名空間的關聯變更為 時 AWS 帳戶，Amazon Redshift 會使用 AWS 帳戶 資訊覆寫命名空間。將關聯從 AWS 帳戶 變更為特定命名空間時，Amazon Redshift 會使用命名空間 AWS 帳戶 資訊覆寫資訊。帳戶中的所有命名空間都可以存取資料。

# 取用者管理員動作
<a name="consumer-cluster-admin"></a>

您可以使用 Amazon Redshift 在取用者叢集上執行管理任務，以管理資料擷取和負載處理。

**如果您是取用者管理員**，請依照下列步驟執行：

1. 列出可供您使用的資料共用，並檢視資料共用的內容。只有當生產者管理員已授權資料共用，且取用者管理員已接受資料共用並與之建立關聯時，才能使用資料共用的內容。如需詳細資訊，請參閱[DESC DATASHARE](r_DESC_DATASHARE.md)及[SHOW DATASHARES](r_SHOW_DATASHARES.md)。

   下列範例會顯示指定生產者命名空間的輸入資料共用資訊。當您以取用者管理員身分執行 DESC DATAHSARE 時，您必須指定 NAMESPACE 和帳戶 ID 以檢視輸入資料共用。對於輸出資料共用，請指定資料共用名稱。

   ```
   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    | 'dd8772e1-d792-4fa4-996b-1870577efc0d'
   ```

   ```
   DESC DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE 'dd8772e1-d792-4fa4-996b-1870577efc0d';
   
   
    producer_account |          producer_namespace          | share_type | share_name | object_type |           object_name
   ------------------+--------------------------------------+------------+------------+-------------+---------------------------------
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | table       | public.tickit_users_redshift
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | table       | public.tickit_venue_redshift
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | table       | public.tickit_category_redshift
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | table       | public.tickit_date_redshift
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | table       | public.tickit_event_redshift
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | table       | public.tickit_listing_redshift
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | table       | public.tickit_sales_redshift
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | schema      | public
   (8 rows)
   ```

   只有叢集超級使用者才能執行此動作。您也可以使用 SVV\$1DATASHARES 來檢視資料共用，以及使用 SVV\$1DATASHARE\$1OBJECTS 來檢視資料共用內的物件。

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

   ```
   SELECT * FROM SVV_DATASHARES WHERE share_name 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      | 'dd8772e1-d792-4fa4-996b-1870577efc0d'
   ```

   ```
   SELECT * FROM SVV_DATASHARE_OBJECTS WHERE share_name LIKE 'sales%';
    share_type | share_name | object_type |           object_name           | producer_account |          producer_namespace
   ------------+------------+-------------+---------------------------------+------------------+--------------------------------------
    INBOUND    | salesshare | table       | public.tickit_users_redshift    | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
    INBOUND    | salesshare | table       | public.tickit_venue_redshift    | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
    INBOUND    | salesshare | table       | public.tickit_category_redshift | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
    INBOUND    | salesshare | table       | public.tickit_date_redshift     | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
    INBOUND    | salesshare | table       | public.tickit_event_redshift    | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
    INBOUND    | salesshare | table       | public.tickit_listing_redshift  | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
    INBOUND    | salesshare | table       | public.tickit_sales_redshift    | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
    INBOUND    | salesshare | schema      | public                          | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
   (8 rows)
   ```

1. 建立參照資料共用的本機資料庫。從資料共用建立資料庫時，請指定 NAMESPACE 和帳戶 ID。如需詳細資訊，請參閱[CREATE DATABASE](r_CREATE_DATABASE.md)。

   ```
   CREATE DATABASE sales_db FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE 'dd8772e1-d792-4fa4-996b-1870577efc0d';
   ```

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

   ```
   CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE 'dd8772e1-d792-4fa4-996b-1870577efc0d';
   ```

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

1. (選擇性) 建立外部結構描述，以參照取用者叢集上匯入之取用者資料庫中的特定結構描述，並對其指派精細的許可。如需詳細資訊，請參閱[CREATE EXTERNAL SCHEMA](r_CREATE_EXTERNAL_SCHEMA.md)。

   ```
   CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';
   ```

1. 視需要，將從資料共用建立的資料庫和結構描述參照的許可授予使用者叢集中的使用者或角色。如需詳細資訊，請參閱 [GRANT](r_GRANT.md) 或 [REVOKE](r_REVOKE.md) 。

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

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

   如果您在沒有 WITH PERSOMMENCE 的情況下建立資料庫，則只能將從資料共用建立的整個資料庫的權限指派給您的使用者或角色。在某些情況下，您需要更精細地控制從資料共用中建立的資料庫物件子集。如果是這樣，您可以建立指向資料共用中特定結構描述的外部結構描述參照，如上一個步驟所述。然後，您可以在結構描述層級上提供精細的許可。您也可以在共用物件之上建立近期繫結檢視，並使用這些檢視來指派精細的許可。也可以考慮讓生產者叢集以所需的精細程度為您建立其他資料共用。您可以依需要，為從資料共用中建立的資料庫建立盡可能多的結構描述參照。

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

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

1. 查詢資料共用中共用物件的資料。

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

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

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

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

   ```
   SELECT * FROM sales_db.public.tickit_sales_redshift;
   ```

   您只能在共用物件上使用 SELECT 陳述式。不過，您可以從不同本機資料庫中的共用物件查詢資料，在取用者叢集中建立資料表。

   除了執行查詢之外，取用者還可以在共用物件上建立檢視。僅支援近期繫結檢視和具體化視觀表。Amazon Redshift 不支援共用資料的一般檢視。取用者建立的檢視可跨越多個本機資料庫或從資料共用建立的資料庫。如需詳細資訊，請參閱[CREATE VIEW](r_CREATE_VIEW.md)。

   ```
   // Connect to a local cluster database
                  
   // Create a view on shared objects and access it. 
   CREATE VIEW sales_data 
   AS SELECT * 
   FROM sales_db.public.tickit_sales_redshift 
   WITH NO SCHEMA BINDING;
   
   SELECT * FROM sales_data;
   ```