

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

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

# 透過 SQL 介面開始使用唯讀資料共用
<a name="getting-started-datashare-sql"></a>

使用 Amazon Redshift 即可安全地在 Amazon Redshift 叢集之間共用資料，讓資料取用者能夠查詢和存取即時資料，而不需複製或複寫資料。資料共用可讓您建立和設定資料共用，這是參考您要共用之資料庫物件的生產者端物件。

您可以在 AWS 帳戶內部或 AWS 區域之間的不同 Amazon Redshift 叢集之間共用資料以供讀取。

**Topics**
+ [共用 內資料的讀取存取權 AWS 帳戶](within-account.md)
+ [在 Amazon Redshift 資料共用中使用檢視](datashare-views.md)
+ [將資料湖資料表新增至資料共用](create-datashare-external-views.md)
+ [跨 共用資料 AWS 帳戶](across-account.md)
+ [跨 共用資料 AWS 區域](across-region.md)
+ [在 上共用授權的 Amazon Redshift 資料 AWS Data Exchange](adx-getting-started.md)
+ [開始使用 AWS Lake Formation受管資料共用](lf-getting-started.md)

# 共用 內資料的讀取存取權 AWS 帳戶
<a name="within-account"></a>

使用 Amazon Redshift，您可以在相同 AWS 帳戶中跨不同的資料庫使用者或群組共用資料的讀取存取權。此功能可讓您精細控制資料存取權限，確保只有經授權的使用者或群組才能讀取特定資料集。

## 以生產者管理員或資料庫擁有者的身分共用資料以供讀取
<a name="share-producer"></a>

1. 在叢集中建立資料共用。如需詳細資訊，請參閱[CREATE DATASHARE](r_CREATE_DATASHARE.md)。

   ```
   CREATE DATASHARE salesshare;
   ```

   叢集超級使用者和資料庫擁有者可以建立資料共用。每個資料共用都會在建立期間與資料庫相關聯。只有來自該資料庫的物件才能在該資料共用中共用。可以在具有相同或不同物件細微程度的相同資料庫上建立多個資料共用。叢集可以建立的資料共用數量不限。

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

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

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

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

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

1. 在資料庫共用中新增物件或移除物件。若要將物件新增至資料共用，請在新增物件之前先新增結構描述。當您新增結構描述時，Amazon Redshift 不會在其下方新增所有物件。務必明確地新增這些物件。如需詳細資訊，請參閱[ALTER DATASHARE](r_ALTER_DATASHARE.md)。

   ```
   ALTER DATASHARE salesshare ADD SCHEMA PUBLIC;
   ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
   ALTER DATASHARE salesshare ADD ALL TABLES IN SCHEMA PUBLIC;
   ```

   您也可將檢視新增到資料共用。

   ```
   CREATE VIEW public.sales_data_summary_view AS SELECT * FROM public.tickit_sales_redshift;
   ALTER DATASHARE salesshare ADD VIEW public.sales_data_summary_view;
   ```

   使用 ALTER DATASHARE 來共用結構描述及指定結構描述中的資料表、檢視和函數。超級使用者、資料共用擁有者或在資料共用上擁有 ALTER 或 ALL 許可的使用者可以修改資料共用，以在其中新增或移除物件。使用者應具有在資料共用中新增或移除物件的許可。使用者也必須是物件的擁有者，或具有物件的 SELECT、USAGE 或 ALL 許可。

   您也可以使用 GRANT 將物件新增至資料共用。此範例說明：

   ```
   GRANT SELECT ON TABLE public.tickit_sales_redshift TO DATASHARE salesshare;
   ```

   此語法的功能等同於 `ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;`。

   使用 INCLUDENEW 子句將指定結構描述中建立的任何新資料表、檢視或 SQL 使用者定義函數 (UDF) 新增至資料共用。只有超級使用者可以為每個「資料共用-結構描述」配對修改此屬性。

   ```
   ALTER DATASHARE salesshare ADD SCHEMA PUBLIC;
   ALTER DATASHARE salesshare SET INCLUDENEW = TRUE FOR SCHEMA PUBLIC;
   ```

   您也可以使用 Amazon Redshift 主控台在資料共用中新增或移除物件。如需詳細資訊，請參閱[將資料共用物件新增到資料共用](datashare-creation.md#add-datashare-object-console)、[從資料共用中移除資料共用物件](manage-datashare-existing-console.md#remove-datashare-object-console)及[編輯在您帳戶中建立的資料共用](manage-datashare-existing-console.md#edit-datashare-console)。

1. 在資料共用中新增或移除取用者。下列範例會將取用者命名空間新增至 `salesshare`。命名空間是帳戶中取用者叢集的命名空間全域唯一識別碼 (GUID)。如需詳細資訊，請參閱 [GRANT](r_GRANT.md) 或 [REVOKE](r_REVOKE.md) 。

   ```
   GRANT USAGE ON DATASHARE salesshare TO NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   ```

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

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

   若要尋找目前所見之叢集的命名空間，您可以使用 SELECT CURRENT\$1NAMESPACE 命令。若要尋找相同 中不同叢集的命名空間 AWS 帳戶，請前往 Amazon Redshift 主控台叢集詳細資訊頁面。在該頁面上，找到新增的命名空間欄位。

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

1. (選擇性) 將安全性限制新增至資料共用。下列範例顯示具有公用 IP 存取權的取用者叢集可以讀取資料共用。如需詳細資訊，請參閱[ALTER DATASHARE](r_ALTER_DATASHARE.md)。

   ```
   ALTER DATASHARE salesshare SET PUBLICACCESSIBLE = TRUE;
   ```

   您可以在建立資料共用之後修改有關取用者類型的屬性。例如，您可以定義要使用指定資料共用中資料的叢集無法公開存取。若查詢來自不符合資料共用中所指定安全性限制的取用者叢集，則會在查詢執行期遭到拒絕。

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

1. 列出在叢集中建立的資料共用，並查看資料共用的內容。

   下列範例會顯示名為 `salesshare` 之資料共用的資訊。

   ```
   DESC DATASHARE salesshare;
                  
    producer_account  |          producer_namespace          | share_type | share_name | object_type |           object_name          |   include_new
   -------------------+--------------------------------------+------------+------------+-------------+--------------------------------+-------------------
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_users_redshift   |   
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_venue_redshift   |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_category_redshift|
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_date_redshift    |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_event_redshift   |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_listing_redshift |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_sales_redshift   |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | schema      | public                         |  t
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | view        | public.sales_data_summary_view |
   ```

   下列範例顯示生產者叢集上的輸出資料共用。

   ```
   SHOW DATASHARES LIKE 'sales%';
   ```

   輸出結果類似如下。

   ```
   share_name | share_owner  | source_database | consumer_database | share_type |     createdate      | is_publicaccessible  | share_acl | producer_account |          producer_namespace 
   -----------+--------------+-----------------+-------------------+------------+---------------------+----------------------+-----------+------------------+---------------------------------------
   salesshare |    100       | dev             |                   |  OUTBOUND  | 2020-12-09 02:27:08 |          True        |           |   123456789012   | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
   ```

   如需詳細資訊，請參閱[DESC DATASHARE](r_DESC_DATASHARE.md)及[SHOW DATASHARES](r_SHOW_DATASHARES.md)。

   您也可以使用 [SVV\$1DATASHARES](r_SVV_DATASHARES.md)、[SVV\$1DATASHARE\$1CONSUMERS](r_SVV_DATASHARE_CONSUMERS.md) 和 [SVV\$1DATASHARE\$1OBJECTS](r_SVV_DATASHARE_OBJECTS.md) 來檢視資料共用、資料共用中的物件，以及資料共用取用者。

1. 捨棄資料共用。如需詳細資訊，請參閱[DROP DATASHARE](r_DROP_DATASHARE.md)。

   您可以在任何時間點使用 [DROP DATASHARE](r_DROP_DATASHARE.md) 刪除資料共用物件。叢集超級使用者和資料共用擁有者可以捨棄資料共用。

   以下範例會捨棄名為 `salesshare` 的資料共用。

   ```
   DROP DATASHARE salesshare;
   ```

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

1. 使用 ALTER DATASHARE 隨時從資料共用中點移除物件。使用 REVOKE USAGE ON 來撤銷特定取用者在資料共用上的許可。它會撤銷資料共用中物件的 USAGE 許可，並立即停止對所有取用者叢集的存取。存取權被撤銷後，列出資料共用和中繼資料查詢 (例如列出資料庫和資料表) 不會傳回共用物件。

   ```
   ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;
   ```

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

1. 如果您不想再與取用者共用資料，請撤銷命名空間中的資料共用存取權。

   ```
   REVOKE USAGE ON DATASHARE salesshare FROM NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   ```

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

## 以取用者管理員的身分共用資料以供讀取
<a name="share-consumer"></a>

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

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

   除了查詢之外，取用者還可以在共用物件上建立檢視。僅支援近期繫結檢視或具體化視觀表。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;
   ```

# 在 Amazon Redshift 資料共用中使用檢視
<a name="datashare-views"></a>

生產者叢集可以共用一般、近期繫結和具體化視觀表。共用一般、近期繫結檢視或具體化檢視時，您不需要共用基底資料表。下表顯示資料共用如何支援檢視。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/dg/datashare-views.html)

下面的查詢顯示資料共用支援的一般檢視輸出。如需一般檢視定義的資訊，請參閱 [CREATE VIEW](r_CREATE_VIEW.md)。

```
SELECT * FROM tickit_db.public.myevent_regular_vw 
ORDER BY eventid LIMIT 5;

   eventid  |  eventname
  ----------+-------------
     3835   | LeAnn Rimes
     3967   | LeAnn Rimes
     4856   | LeAnn Rimes
     4948   | LeAnn Rimes     
     5131   | LeAnn Rimes
```

下面的查詢顯示資料共用支援的近期繫結檢視輸出。如需近期繫結檢視的詳細資訊，請參閱 [CREATE VIEW](r_CREATE_VIEW.md)。

```
SELECT * FROM tickit_db.public.event_lbv 
ORDER BY eventid LIMIT 5;
         
 eventid | venueid | catid | dateid |          eventname           |      starttime
 --------+---------+-------+--------+------------------------------+---------------------
     1   |   305   |   8   |  1851  |        Gotterdammerung       | 2008-01-25 14:30:00
     2   |   306   |   8   |  2114  |           Boris Godunov      | 2008-10-15 20:00:00
     3   |   302   |   8   |  1935  |              Salome          | 2008-04-19 14:30:00
     4   |   309   |   8   |  2090  |  La Cenerentola (Cinderella) | 2008-09-21 14:30:00
     5   |   302   |   8   |  1982  |          Il Trovatore        | 2008-06-05 19:00:00
```

下面的查詢顯示資料共用支援的具體化視觀表輸出。如需具體化視觀表的詳細資訊，請參閱 [CREATE MATERIALIZED VIEW](materialized-view-create-sql-command.md)。

```
SELECT * FROM tickit_db.public.tickets_mv;

  catgroup | qtysold
 ----------+---------
  Concerts | 195444
    Shows  | 149905
```

您可以維護生產者叢集中所有租用戶的通用資料表。您也可以與取用者叢集共用依維度資料欄 (例如 `tenant_id` (`account_id` 或 `namespace_id`)) 篩選的資料子集。若要這麼做，您可以在基底資料表上定義檢視，並在這些 ID 欄上使用篩選，例如 `current_aws_account = tenant_id`。在取用者方面，當您查詢檢視時，您只會看到符合您帳戶資格的資料列。若要這麼做，您可以使用 Amazon Redshift 內容函數 `current_aws_account` 和 `current_namespace`。

下列查詢會傳回目前 Amazon Redshift 叢集所在的帳戶 ID。如果您已連線到 Amazon Redshift，則可以執行此查詢。

```
select current_user, current_aws_account;

current_user | current_aws_account
-------------+--------------------
dwuser       |    111111111111
(1row)
```

下列查詢會傳回目前 Amazon Redshift 叢集的命名空間。如果您已連線到資料庫，則可以執行此查詢。

```
select current_user, current_namespace; 

current_user | current_namespace
-------------+--------------------------------------
dwuser       | 86b5169f-01dc-4a6f-9fbb-e2e24359e9a8
(1 row)
```

## 資料共用中具體化視觀表的累加式重新整理
<a name="mv_incremental_datashare"></a>

 共用基礎資料表或具體化視觀表時，Amazon Redshift 支援取用者資料共用中具體化視觀表的增量重新整理。累加式重新整理是一項操作，Amazon Redshift 會藉此識別基礎資料表自上一次重新整理後發生的變更，並且僅更新具體化視觀表中對應的記錄。如需此行為的詳細資訊，請參閱 [CREATE MATERIALIZED VIEW](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-create-sql-command.html#mv_CREATE_MARTERIALIZED_VIEW_datashare)。

# 將資料湖資料表新增至資料共用
<a name="create-datashare-external-views"></a>

透過資料共用，資料*生產者*可以安全地與相同 AWS 帳戶或不同帳戶中的*消費者*共用精細的資料庫物件，例如結構描述和資料表。生產者也可以在不同區域之間共用物件。本主題說明如何將物件從資料湖，特別是從 AWS Glue 資料目錄新增至資料共用。內容涵蓋了兩個使用案例：
+ *將近期繫結視觀表新增至參考資料湖中資料表的資料共用* - 這對取用者來說很方便，因為使用 Lake Formation 等的初步組態 (例如定義外部來源資料的許可) 可能已經完成。另一個好處是，新增至資料共用的檢視可以聯結資料湖中的資料表與 Redshift 原生資料表。
+ *直接從外部結構描述將資料表新增至資料共用* - 這可在不需額外分層或邏輯的情況下，將資料湖的物件提供給取用者。取用者可以查詢資料表，或將資料表與取用者上的資料表聯結。

在您使用 [CREATE EXTERNAL SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html) 從 Redshift 中的 AWS 資料目錄中參考資料表後，這些案例即適用。 AWS 資料目錄中的任何資料表都可以是來源。

**注意**  
您新增至資料共用的資料湖資料表可包含向 Lake Formation 註冊的資料表和 AWS Glue 資料目錄資料表。

## 建立外部結構描述與外部資料表
<a name="create-datashare-console-external-prelim"></a>

您可以建立外部結構描述和外部資料表，以便將其新增至以下各節中的資料共用。這些是初步步驟。如果您已完成這些步驟，則可略過此節。

1. 在生產者上，建立外部結構描述以參考儲存在 Amazon S3 中的資料湖資料。外部結構描述參考 AWS Glue Data Catalog。示範的角色和區域為範例：

   ```
   CREATE EXTERNAL SCHEMA external_schema_name FROM DATA CATALOG
   DATABASE 'glue_database_name'
   IAM_ROLE 'arn:aws:iam::123456789012:role/sample-role'
   REGION 'us-east-1';
   ```

1. 在外部結構描述中建立資料湖資料表。

   ```
   CREATE EXTERNAL TABLE external_schema_name.sales(
   salesid INTEGER,
   sellerid INTEGER,
   buyerid INTEGER,
   saledate DATE,
   pricepaid DECIMAL(8,2))
   ROW FORMAT delimited
   FIELDS TERMINATED BY '\t'
   STORED AS textfile
   LOCATION 's3://redshift-downloads/tickit/spectrum/sales/';
   ```

   範例包括 `LOCATION`。其形式必須為 `s3://{bucket_name}/{folder}/`，且其中已指定資料夾。資料夾的長度至少須為一個字元。您可以選擇包含子資料夾。若要查看在資料湖中建立資料表的其他範例，請參閱 CREATE EXTERNAL TABLE 的[範例](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE_examples.html)。
**注意**  
只有生產者上的 IAM 角色擁有資料表的 SELECT 存取權時，才支援共用資料表。

## 將參考資料湖資料表的近期繫結視觀表新增至資料共用
<a name="create-datashare-console-external-views-how-to"></a>

當您根據 AWS 資料目錄中的外部結構描述建立資料表，並想要將其新增至資料共用時，最常見的方法是新增參考您建立之資料表的 Redshift 近期繫結檢視，其中包含來自資料湖的資料。下列程序顯示進行的步驟：

1. 建立近期繫結視觀表，以參考您先前建立的外部資料表：

   ```
   CREATE VIEW lbv AS 
   select * from external_schema_name.sales, other_schema.t1
   WITH NO SCHEMA BINDING;
   ```

1. 將檢視結構描述新增至資料共用。這是包含近期繫結視觀表的本機結構描述。

   ```
   ALTER DATASHARE dsx_datashare ADD SCHEMA public;
   ```

1. 將包含近期繫結視觀表所參考資料表的結構描述新增至資料共用。無論結構描述包含本機資料庫物件或來自資料湖的物件，都必須新增結構描述，這是新增至資料共用的檢視中所參考的任何基礎資料表的必要項。請注意，您必須先新增此結構描述，才能新增近期繫結視觀表。

   ```
   ALTER DATASHARE dsx_datashare ADD SCHEMA external_schema_name;
   ALTER DATASHARE dsx_datashare ADD SCHEMA other_schema;
   ```

1. 使用 SQL 命令將檢視新增至資料共用。請注意，資料表名稱包含 schema 字首。

   ```
   ALTER DATASHARE my_datashare ADD TABLE public.lbv;
   ```

1. 確認檢視和結構描述已成功新增至資料共用：

   ```
   SELECT * FROM svv_datashare_objects WHERE share_name = 'my_datashare';
   ```

1. 取用者管理員會從資料共用建立資料庫，然後將使用權授予取用者使用者。

完成這些步驟後，可存取資料共用檢視的資料庫取用者使用者就可以查詢資料。

## 直接將資料湖資料表新增至資料共用
<a name="create-datashare-console-external-views-add-spectrum"></a>

將外部結構描述中的資料表新增至資料共用的方式，與新增檢視類似。這也適用取用者想要以原始狀態查詢資料湖資料表，或取用者想要將其聯結至取用者資料倉儲中的資料表的情況。以下步驟說明如何使用 SQL 將資料湖資料表新增至資料共用。

1. 依照本主題的第一節所述，建立外部結構描述和外部資料表。

1. 

   探索外部結構描述中的現有資料表，以確認您建立的資料表可用：

   ```
   SELECT * FROM svv_external_tables WHERE schemaname = 'external_schema_name';
   ```

1. 將外部結構描述新增至資料共用：

   ```
   ALTER DATASHARE my_datashare ADD SCHEMA external_schema_name;
   ```

1. 將外部資料表新增至資料共用。請注意，資料表名稱包含 schema 字首：

   ```
   ALTER DATASHARE my_datashare ADD TABLE external_schema_name.sales;
   ```

1. 確認資料表已成功新增至資料共用：

   ```
   SELECT * FROM svv_datashare_objects WHERE share_name = 'my_datashare';
   ```

   如需更詳細的指示，請參閱[共用 AWS 帳戶中資料的讀取存取權](https://docs.aws.amazon.com/redshift/latest/dg/within-account.html)。

1. 在取用者上 (這是接收共用資料的資料庫)，管理員會建立資料共用的關聯，讓使用者可以查詢共用資料表。如需如何執行此步驟的詳細資訊，請參閱[以取用者身分管理其他帳戶的資料共用](manage-datashare-other-console.html)。

管理員完成這些步驟後，取用者上的資料庫使用者就可以編寫查詢，以從共用資料表擷取資料，並將其與取用者上的其他資料表聯結。

## 將資料湖物件新增至資料共用的使用須知
<a name="create-datashare-console-external-views-considerations"></a>

當您使用資料共用中資料湖的資料表和檢視時，有幾點須注意：
+ **使用 記錄 AWS CloudTrail** – 存取透過資料共用共用的資料湖資料表時，資料生產者帳戶可以使用 AWS CloudTrail 日誌進行稽核：
  + **使用日誌資料控制資料存取** - CloudTrail 日誌會記錄有關誰存取共用資料表的詳細資訊，包括 Redshift 資料共用生產者和取用者。識別碼可在 `AssumeRole` CloudTrail 日誌的 `ExternalId` 欄位中取得。資料擁有者可以藉由動作對 IAM 政策中的資料存取設定其他限制。如需透過政策定義資料存取的詳細資訊，請參閱[存取第三方擁有 AWS 的帳戶](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)。
+ **安全和取用者許可** - 對於在 Lake Formation 註冊的資料表，Amazon S3 資源會受到 Lake Formation 保護，並使用 Lake Formation 提供的憑證來提供使用。

## 將資料湖物件新增至資料共用的帳單考量事項
<a name="create-datashare-console-external-views-billing"></a>

以下詳細說明在資料共用中儲存和掃描資料湖物件所產生的成本：
+ 當取用者查詢資料湖中的共用物件時，會向取用者收取掃描費用。
  + 當取用者是佈建叢集時，Redshift 會使用 Redshift Spectrum 掃描 Amazon S3 資料。因此，Spectrum 費用會向取用者帳戶收取。
  + 當取用者是 Amazon Redshift Serverless 工作群組時，Spectrum 不會另外收費。
+ Amazon S3 的儲存和操作費用 (例如列出儲存貯體) 會向擁有每個 Amazon S3 儲存貯體的帳戶收取。

如需有關 Amazon Redshift Serverless 計費的其他詳細資訊，請參閱 [Amazon Redshift Serverless 的計費](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-billing.html)。如需更多計費和定價資訊，請查看 [Amazon Redshift 定價](https://aws.amazon.com/redshift/pricing/)。

# 跨 共用資料 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;
   ```

# 跨 共用資料 AWS 區域
<a name="across-region"></a>

您可以在 AWS 區域中的 Amazon Redshift 叢集之間共用資料以供讀取。透過跨區域資料共用，您可以跨 共用資料， AWS 區域 而不需要手動複製資料。您不需要將資料卸載到 Amazon S3，也不需要將資料複製到新的 Amazon Redshift 叢集或執行跨區域快照複製。

透過跨區域資料共用，您可以在相同的 或不同的 中跨叢集共用資料 AWS 帳戶， AWS 帳戶 即使叢集位於不同的區域也一樣。與位於相同 AWS 帳戶 但不同的 Amazon Redshift 叢集共用資料時 AWS 區域，請遵循與在 內共用資料相同的工作流程 AWS 帳戶。如需詳細資訊，請參閱[共用 內資料的讀取存取權 AWS 帳戶](within-account.md)。

如果共用資料的叢集位於不同的 中 AWS 帳戶 AWS 區域，您可以遵循與跨 共用資料的相同工作流程， AWS 帳戶 並在取用者叢集上包含區域層級關聯。跨區域資料共用支援與 內整個 AWS 帳戶、整個 AWS 區域或特定命名空間的資料共用關聯 AWS 區域。如需跨 共用資料的詳細資訊 AWS 帳戶，請參閱 [跨 共用資料 AWS 帳戶](across-account.md)。

使用來自不同區域的資料時，取用者須支付從生產者區域到取用者區域的跨區域資料傳輸費用。

若要使用資料共用，取用者帳戶管理員可以透過下列三種方式之一來與資料共用建立關聯。
+ 與橫跨其所有 的整個 AWS 帳戶 建立關聯 AWS 區域
+ 在 AWS 區域 中與特定 建立關聯 AWS 帳戶
+ 與 內特定命名空間的關聯 AWS 區域

當管理員選擇整個 時 AWS 帳戶， AWS 區域 帳戶中不同 的所有現有和未來命名空間都可以存取資料共用。取用者帳戶管理員也可以選擇區域內的特定 AWS 區域 或命名空間，以對其授予資料共用存取權。

**如果您是生產者管理員或資料庫擁有者**，請建立資料共用、將資料庫物件和資料取用者新增至資料共用，並將許可授予資料取用者。如需詳細資訊，請參閱[生產者管理員動作](producer-cluster-admin.md)。

**如果您是生產者帳戶管理員**，請使用 AWS Command Line Interface (AWS CLI) 或 Amazon Redshift 主控台授權資料共用，然後選擇資料取用者。

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

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

透過跨區域資料共用，您可以使用 AWS Command Line Interface (AWS CLI) 或 Amazon Redshift 主控台在特定 中 AWS 區域 新增叢集。

若要指定一或多個 AWS 區域，您可以使用 `associate-data-share-consumer` CLI 命令搭配選用`consumer-region`選項。

使用 CLI，下列範例會將 `Salesshare`與整個 AWS 帳戶 與 `associate-entire-account`選項建立關聯。您一次只能與一個區域建立關聯。

```
aws redshift associate-data-share-consumer
--region {PRODUCER_REGION}
--data-share-arn arn:aws:redshift:{PRODUCER_REGION}:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/Salesshare
--associate-entire-account
```

以下範例會將 `Salesshare` 與美國東部 (俄亥俄) 區域 (`us-east-2`) 產生關聯。

```
aws redshift associate-data-share-consumer
--region {PRODUCER_REGION}
--data-share-arn arn:aws:redshift:{PRODUCER_REGION}:0123456789012:datashare:{PRODUCER_CLUSTER_NAMESPACE}/Salesshare
--consumer-region 'us-east-2'
```

下列範例會將 `Salesshare`與亞太區域 （雪梨） 區域 () 中另一個 AWS 帳戶 的特定取用者命名空間建立關聯`ap-southeast-2`。

```
aws redshift associate-data-share-consumer
--data-share-arn arn:aws:redshift:{PRODUCER_REGION}:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/Salesshare
--consumer-arn 'arn:aws:redshift:ap-southeast-2:{CONSUMER_ACCOUNT}:namespace:{ConsumerImmutableClusterId}'
```

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

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

**如果您是取用者管理員**，則可以建立參照資料共用的本機資料庫，並視需要，將從資料共用建立的資料庫許可授予取用者叢集中的使用者或角色。您也可以在共用物件上建立檢視，以及建立外部結構描述，以參照取用者叢集上匯入之取用者資料庫中的特定結構描述，並對其指派精細的許可。如需詳細資訊，請參閱[取用者管理員動作](consumer-cluster-admin.md)。

# 管理跨區域資料共用的成本控制
<a name="cross-region-billing"></a>

透過 Amazon Redshift，您可以藉由設定資料共用來限制 AWS 區域之間傳輸的資料量，以管理跨區域資料共用的成本控制。管理跨區域資料共用的成本控制可讓您設定資料傳輸限制、監控資料傳輸用量，以及在接近或超過這些限制時收到通知。

使用來自不同區域的資料時，取用者須支付從生產者區域到取用者區域的跨區域資料傳輸費用。不同區域的資料傳輸價格不同。費用是根據每次成功執行查詢所掃描的資料位元組計算。如需 Amazon Redshift 定價的相關資訊，請參閱 [Amazon Redshift 定價](https://aws.amazon.com/redshift/pricing/)。

系統會根據位元組數量向您收費 (四捨五入至下一個 MB)，每個查詢最少 10MB。您可以針對查詢使用情況設定成本控制，並檢視叢集上每個查詢傳輸的資料量。

若要監看和控制跨區域資料共用的使用情況和相關成本，您可以建立每日、每週、每月的用量限制，並定義達到這些限制時 Amazon Redshift 自動採取的動作，以透過可預測性協助維持預算。

根據您設定的用量限制，Amazon Redshift 採取的動作可以是將事件記錄到系統資料表、傳送 CloudWatch 警示並使用 Amazon SNS 通知管理員，或是關閉跨區域資料共用以供進一步使用。

若要在 Amazon Redshift 主控台中建立用量限制，請在叢集的**動作**下選擇**設定用量限制**。您可以透過**叢集效能**或**監控**索引標籤中自動產生的 CloudWatch 指標，監控使用量趨勢，並收到使用量超出定義限制的警示。您也可以使用 AWS CLI 或 Amazon Redshift API 操作，以程式設計方式建立、修改和刪除用量限制。

# 在 上共用授權的 Amazon Redshift 資料 AWS Data Exchange
<a name="adx-getting-started"></a>

建立 AWS Data Exchange 資料共用並將其新增至 AWS Data Exchange 產品時，供應商可以在 Amazon Redshift 中授權資料，供消費者在擁有作用中 AWS Data Exchange 訂閱時在 Amazon Redshift 中探索、訂閱和查詢up-to-date資料。

將 AWS Data Exchange 資料共用新增至 AWS Data Exchange 產品後，消費者會在訂閱開始時自動存取產品的資料共用，並在其訂閱處於作用中狀態時保留其存取權。

**Topics**
+ [以生產者身分使用 AWS Data Exchange 資料共用](adx-getting-started-producer.md)
+ [以取用者身分使用 AWS Data Exchange 資料共用](#adx-getting-started-consumer)

# 以生產者身分使用 AWS Data Exchange 資料共用
<a name="adx-getting-started-producer"></a>

使用 Amazon Redshift，您可以透過建立和管理資料共用，以生產者 AWS Data Exchange 身分與 共用即時資料產品。

**如果您是生產者管理員，請依照下列步驟在 Amazon Redshift 主控台上管理 AWS Data Exchange 資料共用：**

1. 在叢集中建立資料共用，以在 上共用資料， AWS Data Exchange 並授予 AWS Data Exchange 對資料共用的存取權。

   叢集超級使用者和資料庫擁有者可以建立資料共用。每個資料共用都會在建立期間與資料庫相關聯。只有來自該資料庫的物件才能在該資料共用中共用。可以在具有相同或不同物件細微程度的相同資料庫上建立多個資料共用。可以在叢集中建立的資料共用數量不限。

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

   執行 CREATE DATASHARE 陳述式 AWS Data Exchange 時，使用 MANAGEDBY ADX 選項隱含地將資料共用的存取權授予 。這表示 AWS Data Exchange 管理此資料共用。您只能在建立新資料共用時使用 MANAGEDBY ADX 選項。您不能使用 ALTER DATASHARE 陳述式來修改現有的資料共用，以新增 MANAGEDBY ADX 選項。使用 MANAGEDBY ADX 選項建立資料共用後，只有 AWS Data Exchange 能存取和管理資料共用。

   ```
   CREATE DATASHARE salesshare
   [[SET] MANAGEDBY [=] {ADX} ];
   ```

1. 將物件新增到資料共用。生產者管理員會繼續管理資料共用中可用的 AWS Data Exchange 資料共用物件。

   若要將物件新增至資料共用，請在新增物件之前先新增結構描述。當您新增結構描述時，Amazon Redshift 不會在其下方新增所有物件。您必須明確地新增這些物件。如需詳細資訊，請參閱[ALTER DATASHARE](r_ALTER_DATASHARE.md)。

   ```
   ALTER DATASHARE salesshare ADD SCHEMA PUBLIC;
   ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
   ALTER DATASHARE salesshare ADD ALL TABLES IN SCHEMA PUBLIC;
   ```

   您也可將檢視新增到資料共用。

   ```
   CREATE VIEW public.sales_data_summary_view AS SELECT * FROM public.tickit_sales_redshift;
   ALTER DATASHARE salesshare ADD TABLE public.sales_data_summary_view;
   ```

   使用 ALTER DATASHARE 來共用結構描述及指定結構描述中的資料表、檢視和函數。超級使用者、資料共用擁有者或在資料共用上擁有 ALTER 或 ALL 許可的使用者可以修改資料共用，以在其中新增或移除物件。使用者應具有在資料共用中新增或移除物件的許可。使用者也必須是物件的擁有者，或具有物件的 SELECT、USAGE 或 ALL 許可。

   使用 INCLUDENEW 子句將指定結構描述中建立的任何新資料表、檢視或 SQL 使用者定義函數 (UDF) 新增至資料共用。只有超級使用者可以為每個「資料共用-結構描述」配對修改此屬性。

   ```
   ALTER DATASHARE salesshare ADD SCHEMA PUBLIC;
   ALTER DATASHARE salesshare SET INCLUDENEW = TRUE FOR SCHEMA PUBLIC;
   ```

   您也可以使用 Amazon Redshift 主控台在資料共用中新增或移除物件。如需詳細資訊，請參閱[將資料共用物件新增到資料共用](datashare-creation.md#add-datashare-object-console)、[從資料共用中移除資料共用物件](manage-datashare-existing-console.md#remove-datashare-object-console)及[編輯 AWS Data Exchange 資料共用](manage-adx-datashare-console.md#edit-adx-datashare-console)。

1. 若要授權存取 的資料共用 AWS Data Exchange，請執行下列其中一項操作：
   +  AWS Data Exchange 使用 `aws redshift authorize-data-share` API 中的 `ADX`關鍵字明確授權存取 的資料共用。這可讓 AWS Data Exchange 辨識服務帳戶中的資料共用，並管理將取用者與資料共用的關聯。

     ```
     aws redshift authorize-data-share 
     --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare 
     --consumer-identifier ADX
     ```

     您可以針對 `AuthorizeDataShare` 和 `DeauthorizeDataShare` API 使用條件金鑰 `ConsumerIdentifier`，明確允許或拒絕 AWS Data Exchange 呼叫 IAM 政策中的兩個 API。

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "VisualEditor0",
                 "Effect": "Deny",
                 "Action": [
                     "redshift:AuthorizeDataShare",
                     "redshift:DeauthorizeDataShare"
                 ],
                 "Resource": "*",
                 "Condition": {
                     "StringEqualsIgnoreCase": {
                         "redshift:ConsumerIdentifier": "ADX"
                     }
                 }
             }
         ]
     }
     ```

------
   + 使用 Amazon Redshift 主控台來給予或移除 AWS Data Exchange 資料共用的授權。如需詳細資訊，請參閱[授予或移除資料共用的授權](authorize-datashare-console.md)。
   + 或者，您可以在將 AWS Data Exchange 資料共用匯入 AWS Data Exchange 資料集時隱含授權存取資料共用。

   若要移除存取 AWS Data Exchange 資料共用的授權，請在 `aws redshift deauthorize-data-share` API 操作中使用 `ADX`關鍵字。透過這樣做，您可以讓 AWS Data Exchange 識別服務帳戶中的資料共用，並管理從資料共用中刪除關聯的操作。

   ```
   aws redshift deauthorize-data-share 
   --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare 
   --consumer-identifier ADX
   ```

1. 列出在叢集中建立的資料共用，並查看資料共用的內容。

   下列範例會顯示名為 salesshare 之資料共用的資訊。如需詳細資訊，請參閱[DESC DATASHARE](r_DESC_DATASHARE.md)及[SHOW DATASHARES](r_SHOW_DATASHARES.md)。

   ```
   DESC DATASHARE salesshare;
                  
    producer_account  |          producer_namespace          | share_type | share_name | object_type |           object_name          |   include_new
   -------------------+--------------------------------------+------------+------------+-------------+--------------------------------+-------------------
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_users_redshift   |   
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_venue_redshift   |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_category_redshift|
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_date_redshift    |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_event_redshift   |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_listing_redshift |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_sales_redshift   |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | schema      | public                         |  t
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | view        | public.sales_data_summary_view |
   ```

   下列範例顯示生產者叢集上的輸出資料共用。

   ```
   SHOW DATASHARES LIKE 'sales%';
   ```

   輸出結果類似如下。

   ```
   share_name | share_owner  | source_database | consumer_database | share_type |     createdate      | is_publicaccessible  | share_acl | producer_account |          producer_namespace 
   -----------+--------------+-----------------+-------------------+------------+---------------------+----------------------+-----------+------------------+---------------------------------------
   salesshare |    100       | dev             |                   |  OUTBOUND  | 2020-12-09 02:27:08 |          True        |           |   123456789012   | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
   ```

   如需詳細資訊，請參閱[DESC DATASHARE](r_DESC_DATASHARE.md)及[SHOW DATASHARES](r_SHOW_DATASHARES.md)。

   您也可以使用 [SVV\$1DATASHARES](r_SVV_DATASHARES.md)、[SVV\$1DATASHARE\$1CONSUMERS](r_SVV_DATASHARE_CONSUMERS.md) 和 [SVV\$1DATASHARE\$1OBJECTS](r_SVV_DATASHARE_OBJECTS.md) 來檢視資料共用、資料共用中的物件，以及資料共用取用者。

1. 捨棄資料共用。建議您不要 AWS 帳戶 使用 DROP DATASHARE 陳述式刪除 AWS Data Exchange 與其他 共用的資料共用。這些帳戶將會失去資料共用的存取權。此動作不可復原。這可能會違反其中的資料產品優惠條款 AWS Data Exchange。如果您想要刪除 AWS Data Exchange 資料共用，請參閱 [DROP DATASHARE 使用須知](r_DROP_DATASHARE.md#r_DROP_DATASHARE_usage)。

   以下範例會捨棄名為 salesshare 的資料共用。

   ```
   DROP DATASHARE salesshare;
   ERROR:  Drop of ADX-managed datashare salesshare requires session variable datashare_break_glass_session_var to be set to value '620c871f890c49'
   ```

   若要允許捨棄 AWS Data Exchange 資料共用，請設定 datashare\$1break\$1glass\$1session\$1var 變數，然後再次執行 DROP DATASHARE 陳述式。如果您想要刪除 AWS Data Exchange 資料共用，請參閱 [DROP DATASHARE 使用須知](r_DROP_DATASHARE.md#r_DROP_DATASHARE_usage)。

   您也可以使用 Amazon Redshift 主控台刪除資料共用。如需詳細資訊，請參閱[刪除在您帳戶中建立 AWS Data Exchange 的資料共用](manage-adx-datashare-console.md#delete-adx-datashare-console)。

1. 使用 ALTER DATASHARE 隨時從資料共用中點移除物件。使用 REVOKE USAGE ON 來撤銷特定取用者在資料共用上的許可。它會撤銷資料共用中物件的 USAGE 許可，並立即停止對所有取用者叢集的存取。存取權被撤銷後，列出資料共用和中繼資料查詢 (例如列出資料庫和資料表) 不會傳回共用物件。

   ```
   ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;
   ```

   您也可以使用 Amazon Redshift 主控台編輯資料共用。如需詳細資訊，請參閱[編輯 AWS Data Exchange 資料共用](manage-adx-datashare-console.md#edit-adx-datashare-console)。

1. 從 AWS Data Exchange 資料共用授予或撤銷 GRANT USAGE。您無法授予或撤銷 AWS Data Exchange 資料共用的 GRANT USAGE。下列範例顯示針對 AWS Data Exchange 管理 AWS 帳戶 的資料共用，將 GRANT USAGE 許可授予 時發生錯誤。

   ```
   CREATE DATASHARE salesshare MANAGEDBY ADX;
   ```

   ```
   GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '012345678910';
   ERROR:  Permission denied to add/remove consumer to/from datashare salesshare. Datashare consumers are managed by ADX.
   ```

   如需詳細資訊，請參閱 [GRANT](r_GRANT.md) 或 [REVOKE](r_REVOKE.md) 。

**如果您是生產者管理員，請按照下列步驟在 AWS Data Exchange 主控台上建立及發佈資料共用產品：**
+ 建立 AWS Data Exchange 資料共用後，生產者會建立新的資料集、匯入資產、建立修訂，以及建立和發佈新產品。

  使用 Amazon Redshift 主控台建立資料集。如需詳細資訊，請參閱[在 上建立資料集 AWS Data Exchange](manage-adx-datashare-console.md#create-dataset-console)。

  如需詳細資訊，請參閱[在 上提供資料產品 AWS Data Exchange](https://docs.aws.amazon.com/data-exchange/latest/userguide/providing-data-sets.html)。

## 以取用者身分使用 AWS Data Exchange 資料共用
<a name="adx-getting-started-consumer"></a>

使用 Amazon Redshift，您可以從 存取和分析資料集， AWS Data Exchange 而不必存放或管理資料的副本。

**如果您是取用者，請依照下列步驟探索包含資料共用 AWS Data Exchange 的資料產品，並查詢 Amazon Redshift 資料：**

1. 在 AWS Data Exchange 主控台上，探索並訂閱包含資料共用 AWS Data Exchange 的資料產品。

   訂閱啟動後，您可以存取授權的 Amazon Redshift 資料，該資料會以資產的形式匯入包含 AWS Data Exchange 資料共用的資料集。

   如需如何開始使用包含 AWS Data Exchange 資料共用之資料產品的詳細資訊，請參閱[訂閱 上的資料產品 AWS Data Exchange](https://docs.aws.amazon.com/data-exchange/latest/userguide/subscribe-to-data-sets.html)。

1. 如有需要，在 Amazon Redshift 主控台上，建立 Amazon Redshift 叢集。

   如需如何建立叢集的資訊，請參閱[建立叢集](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-console.html#create-cluster)。

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

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

   ```
   DESC DATASHARE salesshare of ACCOUNT '123456789012' 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. 建立參照資料共用的本機資料庫。您必須指定 ACCOUNT 和 NAMESPACE 選項，才能建立 AWS Data Exchange 資料共用的本機資料庫。如需詳細資訊，請參閱[CREATE DATABASE](r_CREATE_DATABASE.md)。

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

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

   ```
   CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF ACCOUNT '123456789012' 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)。

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 的情況下建立資料庫，則只能將從資料共用建立的整個資料庫的權限指派給您的使用者和角色。在某些情況下，您需要更精細地控制從資料共用中建立的資料庫物件子集。如果是這樣，您可以建立指向資料共用中特定結構描述的外部結構描述參考 (如上一個步驟所述)，並在結構描述層級上提供精細的許可。

   您也可以在共用物件之上建立近期繫結檢視，並使用這些檢視來指派精細的許可。也可以考慮讓生產者叢集以所需的精細程度為您建立其他資料共用。您可以依需要，為從資料共用中建立的資料庫建立盡可能多的結構描述參照。

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

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

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

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

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

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

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

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

   除了查詢之外，取用者還可以在共用物件上建立檢視。僅支援近期繫結檢視或具體化視觀表。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;
   ```

# 開始使用 AWS Lake Formation受管資料共用
<a name="lf-getting-started"></a>

使用 Amazon Redshift，您可以透過 AWS Lake Formation受管資料共用在 AWS 帳戶和 Amazon Redshift 叢集之間存取和共用即時資料。 AWS Lake Formation 資料共用可讓資料提供者安全地從其 Amazon S3 資料湖與任何消費者共用即時資料，包括其他 AWS 帳戶和 Amazon Redshift 叢集。

# 以生產者身分使用 Lake Formation 管理的資料共用
<a name="lake-formation-getting-started-producer"></a>

使用 Amazon Redshift，您可以存取和分析透過資料共用共用 AWS Lake Formation 的資料。 AWS Lake Formation 資料共用可跨 AWS 帳戶和 Amazon Redshift 叢集進行安全的資料共用，而無需複製或移動基礎資料。

將資料分享至 AWS Lake Formation 可讓您集中定義 Amazon Redshift 資料共用的 AWS Lake Formation 許可，並限制使用者存取資料共用中的物件。

使用 Amazon Redshift，您可以使用 AWS Lake Formation受管資料共用做為生產者，在 AWS 帳戶和 Amazon Redshift 叢集之間安全地共用即時資料。Lake Formation 受管資料共用是一種物件，可讓您將 Amazon Redshift 叢集中的即時資料與其他 AWS 帳戶和服務共用。

身為生產者叢集或工作群組管理員，請依照下列步驟將資料共用至 Lake Formation：

1. 在叢集中建立資料共用，並授權 AWS Lake Formation 存取資料共用。

   只有叢集超級使用者和資料庫擁有者可以建立資料共用。每個資料共用都會在建立期間與資料庫相關聯。只有來自該資料庫的物件才能在該資料共用中共用。可以在具有相同或不同物件細微程度的相同資料庫上建立多個資料共用。可以在叢集中建立的資料共用數量不限。

   ```
   CREATE DATASHARE salesshare;
   ```

1. 將物件新增到資料共用。生產者叢集或工作群組管理員會繼續管理可用的資料共用物件。若要將物件新增至資料共用，請在新增物件之前先新增結構描述。當您新增結構描述時，Amazon Redshift 不會在其下方新增所有物件。您必須明確地新增這些物件。如需詳細資訊，請參閱 [ALTER DATASHARE](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_DATASHARE.html)。

   ```
   ALTER DATASHARE salesshare ADD SCHEMA PUBLIC;
   ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
   ALTER DATASHARE salesshare ADD ALL TABLES IN SCHEMA PUBLIC;
   ```

   您也可將檢視新增到資料共用。支援的檢視為標準檢視、近期繫結檢視和具體化視觀表。

   ```
   CREATE VIEW public.sales_data_summary_view AS SELECT * FROM public.tickit_sales_redshift;
   ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
   ```

   使用 ALTER DATASHARE 來共用結構描述及指定結構描述中的資料表和檢視。超級使用者、資料共用擁有者或在資料共用上擁有 ALTER 或 ALL 許可的使用者可以修改資料共用，以在其中新增或移除物件。資料庫使用者應是物件的擁有者，或具有物件的 SELECT、USAGE 或 ALL 許可。

   使用 INCLUDENEW 子句將指定結構描述中建立的任何新資料表和檢視新增至資料共用。只有超級使用者可以為每個「資料共用-結構描述」配對修改此屬性。

   ```
   ALTER DATASHARE salesshare ADD SCHEMA PUBLIC;
   ALTER DATASHARE salesshare SET INCLUDENEW = TRUE FOR SCHEMA PUBLIC;
   ```

1. 將資料共用的存取權授予 Lake Formation 管理員帳戶。

   ```
   GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '012345678910' VIA DATA CATALOG;
   ```

   若要撤銷使用權，請使用下列命令。

   ```
   REVOKE USAGE ON DATASHARE salesshare FROM ACCOUNT '012345678910' VIA DATA CATALOG;
   ```

1. 使用 `aws redshift authorize-data-share` API 操作授權存取 Lake Formation 的資料共用。這麼做可允許 Lake Formation 識別服務帳戶中的資料共用，並管理將取用者與資料共用的關聯。

   ```
   aws redshift authorize-data-share 
   --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare 
   --consumer-identifier {"DataCatalog/<consumer-account-id>"}
   ```

    若要從 Lake Formation 管理的資料共用中移除授權，請使用 `aws redshift deauthorize-data-share` API 操作。透過這樣做，您可以允許 AWS Lake Formation 辨識服務帳戶中的資料共用並移除授權。

   ```
   aws redshift deauthorize-data-share 
   --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare 
   --consumer-identifier {"DataCatalog/<consumer-account-id>"}
   ```

    在任何時候，如果生產者叢集或工作群組管理員決定不再需要與取用者叢集或工作群組共用資料，他們可以使用 DROP DATASHARE 刪除資料共用、取消授權資料共用，或撤銷資料共用許可。Lake Formation 中的相關許可和物件不會自動刪除。

   ```
   DROP DATASHARE salesshare;
   ```

    授權 Lake Formation 帳戶管理資料共用後，Lake Formation 管理員可以探索共用的資料共用、將日期共用與 Data Catalog ARN 建立關聯，並在 AWS Glue Data Catalog 連結至資料共用的 中建立資料庫。若要使用 建立資料共用的關聯 AWS CLI，請使用 命令 [ associate-data-share-consumer](https://docs.aws.amazon.com/cli/latest/reference/redshift/associate-data-share-consumer.html)。若要在 AWS 區域之間共用資料共用，請在 `associate-data-share-consumer` 命令中指定 `--region` 參數，或使用 AWS 主控台選擇資料取用者。以下範例示範如何在區域之間共用 Lake Formation 受管資料共用。

   ```
   aws redshift associate-data-share-consumer --region <region-1>
   --data-share-arn 'arn:aws:redshift:us-east-1:12345678912:datashare:035c45ea-61ce-86f0-8b75-19ac6102c3b7/sample_share' 
   --consumer-arn 'arn:aws:glue:<region-1>:111912345678:catalog'
   ```

   Lake Formation 管理員還必須建立本機資源，以定義資料共用中的物件應如何對應到 Lake Formation 中的物件。如需探索資料共用和建立本機資源的相關資訊，請參閱[管理 Amazon Redshift 資料共用中的資料許可](https://docs.aws.amazon.com/lake-formation/latest/dg/data-sharing-redshift.html)。

# 以取用者身分使用 Lake Formation 管理的資料共用
<a name="lake-formation-getting-started-consumer"></a>

使用 Amazon Redshift 可讓您存取和分析透過 AWS Lake Formation 資料共用與您共用的資料。資料共用是一種資料產品，其中包含來自不同資料來源的資料物件集合，例如資料表或資料庫。

 AWS Lake Formation 管理員探索資料共用邀請並在 AWS Glue Data Catalog 連結至資料共用的 中建立資料庫後，取用者叢集或工作群組管理員可以將叢集與 中的資料共用和資料庫建立關聯 AWS Glue Data Catalog，建立取用者叢集或工作群組的本機資料庫，並授予存取 Amazon Redshift 取用者叢集或工作群組中的使用者和角色以開始查詢。請遵循以下步驟來設定查詢許可。

1. 如有需要，請在 Amazon Redshift 主控台建立 Redshift 叢集做為取用者叢集或工作群組使用。如需如何建立叢集的資訊，請參閱[建立叢集](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-console.html#create-cluster)。

1. 若要列出 AWS Glue Data Catalog 取用者叢集或工作群組使用者可存取哪些資料庫，請執行 [SHOW DATABASES](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW_DATABASES.html) 命令。

   ```
   SHOW DATABASES FROM DATA CATALOG [ACCOUNT <account-id>,<account-id2>] [LIKE <expression>]
   ```

   這樣做會列出資料目錄中可用的資源，例如 AWS Glue 資料庫的 ARN、資料庫名稱，以及資料共用的相關資訊。

1. 使用 SHOW DATABASES 中的 AWS Glue 資料庫 ARN，在取用者叢集或工作群組中建立本機資料庫。如需詳細資訊，請參閱 [CREATE DATABASE](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_DATABASE.html)。

   ```
   CREATE DATABASE lf_db FROM ARN <lake-formation-database-ARN> WITH [NO] DATA CATALOG SCHEMA [<schema>];
   ```

1. 視需要，將從資料共用建立的資料庫和結構描述參照的存取權授予取用者叢集或工作群組中的使用者和角色。如需詳細資訊，請參閱 [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html) 或 [REVOKE](https://docs.aws.amazon.com//redshift/latest/dg/r_REVOKE.html)。請注意，透過 [CREATE USER](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_USER.html) 命令建立的使用者無法存取已共用至 Lake Formation 的資料共用中的物件。只有同時擁有 Redshift 和 Lake Formation 存取權的使用者才能存取已與 Lake Formation 共用的資料共用。

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

    身為取用者叢集或工作群組管理員，您只能將從資料共用建立的整個資料庫的許可指派給使用者和角色。在某些情況下，您需要更精細地控制從資料共用中建立的資料庫物件子集。

    您也可以在共用物件之上建立近期繫結檢視，並使用這些檢視來指派精細的許可。您也可以考慮讓生產者叢集或工作群組以所需的精細程度為您建立其他資料共用。您可以為從資料共用中建立的資料庫建立盡可能多的結構描述參照。

1. 資料庫使用者可以使用 SVV\$1EXTERNAL\$1TABLES 和 SVV\$1EXTERNAL\$1COLUMNS 檢視來尋找 AWS Glue 資料庫內的所有共用資料表或資料欄。

   ```
   SELECT * from svv_external_tables WHERE redshift_database_name = 'lf_db';
                           
   SELECT * from svv_external_columns WHERE redshift_database_name = 'lf_db';
   ```

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

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

   ```
   SELECT * FROM lf_db.schema.table;
   ```

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

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