

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 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 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 语句时，使用 MANAGEDBY ADX 选项隐式授予 AWS Data Exchange 对数据共享的访问权限。这表明 AWS Data Exchange 管理此数据共享。创建新的数据共享时，您只能使用 MANAGEDBY ADX 选项。不能使用 ALTER DATASHARE 语句修改现有的数据共享，以添加 MANAGEDBY ADX 选项。使用 MANAGEDBY ADX 选项创建数据共享后，只有 AWS Data Exchange 可以访问和管理数据共享。

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

1. 将对象添加到数据共享中。创建者管理员继续管理 AWS Data Exchange 数据共享中可用的数据共享对象。

   要将对象添加到数据共享中，请在添加对象之前添加 schema。当您添加 schema 时，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 共享给定 schema 中的 schema 以及表、视图和函数。超级用户、数据共享拥有者或对数据共享具有 ALTER 或 ALL 权限的用户可以更改数据共享以向其中添加对象或从中删除对象。用户应具有向数据共享中添加对象或从中删除对象的权限。用户还应该是对象的拥有者，或者对这些对象具有 SELECT、USAGE 或 ALL 权限。

   使用 INCLUDENEW 子句将在指定 schema 中创建的任何未来表、视图或 SQL 用户定义函数 (UDF) 添加到数据共享中。只有超级用户才可以更改每个数据共享-schema 对的此属性。

   ```
   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 redshift authorize-data-share` API 中的 `ADX` 关键词明确授权对 AWS Data Exchange 数据共享的访问权限。这样可允许 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
     ```

     您可以将条件键 `ConsumerIdentifier` 用于 `AuthorizeDataShare` 和 `DeauthorizeDataShare`，以明确允许或拒绝 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\_DATASHARES](r_SVV_DATASHARES.md)、[SVV\_DATASHARE\_CONSUMERS](r_SVV_DATASHARE_CONSUMERS.md) 和 [SVV\_DATASHARE\_OBJECTS](r_SVV_DATASHARE_OBJECTS.md) 来查看数据共享、数据共享内的对象以及数据共享使用者。

1. 删除数据共享。我们建议您不要使用 DROP DATASHARE 语句删除共享给其他 AWS 账户 的 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\_break\_glass\_session\_var 变量，然后再次运行 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 账户授予对数据共享（由 AWS Data Exchange 管理）的 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)。