

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 生产者针对 Amazon Redshift 中现有数据共享的操作
生产者针对现有数据共享的操作

使用 Amazon Redshift，您可以管理现有的数据共享，以控制对 Amazon Redshift 集群中数据的访问。以下各节将逐步指导您如何修改数据共享对象、管理数据共享权限和更新数据共享属性，以有效控制和审核 Amazon Redshift 环境中的数据访问。

**Topics**
+ [

# 在 Amazon Redshift 中查看数据共享
](writes-viewing.md)
+ [

# 在 Amazon Redshift 中编辑在您的账户中创建的数据共享
](writes-editing.md)
+ [

# 在 Amazon Redshift 中移除数据共享的授权
](writes-removing-authorization.md)
+ [

# 在 Amazon Redshift 中从数据共享移除数据共享对象
](writes-removing-datashare-object.md)
+ [

# 在 Amazon Redshift 中从数据共享移除数据使用者
](writes-removing-data-consumer.md)
+ [

# 在 Amazon Redshift 中删除在您的账户中创建的数据共享
](writes-deleting.md)

# 在 Amazon Redshift 中查看数据共享
查看数据共享

您可以通过控制台或使用 SQL 查看数据共享。

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

可以从**数据共享**或**集群**选项卡中查看数据共享。
+ 使用**数据共享**选项卡列出您的账户或其它账户中的数据共享。
  + 要查看在您的账户中创建的数据共享，请选择**在我的账户中**，然后选择要查看的数据共享。
  + 要查看从其他账户共享的数据共享，请选择**来自其他账户**，然后选择要查看的数据共享。
+ 使用**集群**选项卡列出您的集群中或其它集群中的数据共享。

  首先，连接到数据库。然后，从**来自其它集群的数据共享**或**在我的集群中创建的数据共享**部分中选择一个数据共享，以查看其详细信息。

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

您可以列出在集群中创建的数据共享，并查看数据共享的内容。

以下示例显示名为 `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) 来查看数据共享、数据共享内的对象以及数据共享使用者。

------

# 在 Amazon Redshift 中编辑在您的账户中创建的数据共享
编辑数据共享

您可以使用控制台和 SQL 编辑在您的账户中创建的数据共享。

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

在控制台上，首先执行以下步骤连接到数据库，以查看在您的账户中创建的数据共享的列表。

1. 登录到 Amazon Web Services 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.amazonaws.cn/redshiftv2/)。

1. 在导航菜单上，选择**集群**，然后选择您的集群。此时会显示集群详细信息页面。

1. 选择**数据共享**。

1. 在**在我的账户中创建的数据共享**部分中，选择**连接到数据库**。

1. 选择要编辑的数据共享，然后选择**编辑**。此时将会显示数据共享详细信息页面。

1. 在 **Datashare objects**（数据共享对象）或 **Data consumers**（数据使用者）部分中进行任何更改。

1. 选择**保存更改**。Amazon Redshift 会使用更改更新您的数据共享。
**注意**  
如果您选择将数据共享发布到 Amazon Glue Data Catalog，则无法编辑配置以将数据共享发布到其他 Amazon Redshift 账户。

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

使用 ALTER DATASHARE 可以在任何时间点从数据共享中删除对象。要移除架构，请使用以下命令：

```
ALTER DATASHARE salesshare REMOVE SCHEMA PUBLIC;
```

要移除表，请使用以下命令：

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

使用 REVOKE USAGE ON 可撤销某些使用者对数据共享的权限。它可以撤消对数据共享内的对象的 USAGE 权限，并立即停止对所有使用者集群的访问。列出数据共享和元数据查询（如列出数据库和表）不会在撤销访问权限后返回共享对象。如果您不想再与使用者共享数据，则撤消从命名空间对数据共享的访问权限。

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

如果您不想再与使用者共享数据，请从 Amazon Web Services 账户中撤销对数据共享的访问权限：

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

------

# 在 Amazon Redshift 中移除数据共享的授权
移除数据共享的授权

使用 Amazon Redshift，您可以通过撤销对指定使用者的授权来控制对数据共享的访问权限。本节说明了在 Amazon Redshift 中撤销使用者对数据共享的访问权限。

**注意**  
要移除对数据共享的授权，必须至少将一个数据使用者添加到数据共享中。

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

选择要对其删除授权的一个或多个使用者集群。然后选择**删除授权**。

删除授权后，数据使用者将立即失去对数据共享的访问权限。

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

生产者安全管理员确定以下内容：
+ 其他账户是否可以访问数据共享。
+ 如果账户有权访问数据共享，则该账户是否具有写入权限。

取消对数据共享的授权需要以下 IAM 权限：

**redshift:DeauthorizeDataShare**

您可以通过 CLI 调用或 API 取消使用权限和写入授权：

```
deauthorize-data-share
--data-share-arn <value>
--consumer-identifier <value>
```

有关该命令的更多信息，请参阅 [deauthorize-data-share](https://docs.amazonaws.cn/cli/latest/reference/redshift/deauthorize-data-share.html)。

------

# 在 Amazon Redshift 中从数据共享移除数据共享对象
从数据共享中移除数据共享对象

您可以按照以下过程从数据共享中删除一个或多个对象。

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

要在控制台上从数据共享中移除一个或多个对象，请执行以下步骤。

1. 登录到 Amazon Web Services 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.amazonaws.cn/redshiftv2/)。

1. 在导航菜单上，选择**集群**，然后选择您的集群。此时会显示集群详细信息页面。

1. 选择**数据共享**。

1. 在**在我的账户中创建的数据共享**部分中，选择**连接到数据库**。有关更多信息，请参阅 [连接到数据库](connect-database-console.md)。

1. 选择要编辑的数据共享，然后选择**编辑**。此时将会显示数据共享详细信息页面。

1. 要将一个或多个数据共享对象从数据共享中删除，请执行下列操作之一：
   + 要从数据共享中删除 schema，请选择一个或多个 schema。然后，选择**移除**。Amazon Redshift 会从数据共享中删除指定的 schema 和指定 schema 的所有对象。
   + 要从数据共享中删除表和视图，请选择一个或多个表和视图。然后选择**删除**。或者，选择**按 schema 删除**以删除指定 schema 中的所有表和视图。
   + 要从数据共享中删除用户定义的函数，请选择一个或多个用户定义的函数。然后选择**删除**。或者，选择**按 schema 删除**以删除指定 schema 中的所有用户定义函数。

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

使用 ALTER DATASHARE 可以在任何时间点从数据共享中删除对象。要移除架构，请使用以下命令：

```
ALTER DATASHARE salesshare REMOVE SCHEMA PUBLIC;
```

要移除表，请使用以下命令：

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

------

# 在 Amazon Redshift 中从数据共享移除数据使用者
从数据共享移除数据使用者

您可以从数据共享中删除一个或多个数据使用者。数据使用者可以是唯一标识 Amazon Redshift 集群或 Amazon 账户的命名空间。

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

要在控制台上从数据共享移除一个或多个数据使用者，请从命名空间 ID 或 Amazon 账户中选择一个或多个数据使用者。然后，选择**移除**。

Amazon Redshift 会从数据共享中删除指定的数据使用者。他们将立即失去对数据共享的访问权限。

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

使用 REVOKE USAGE ON 可撤销某些使用者对数据共享的权限。它可以撤消对数据共享内的对象的 USAGE 权限，并立即停止对所有使用者集群的访问。列出数据共享和元数据查询（如列出数据库和表）不会在撤销访问权限后返回共享对象。如果您不想再与使用者共享数据，则撤消从命名空间对数据共享的访问权限。

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

------

# 在 Amazon Redshift 中删除在您的账户中创建的数据共享
删除数据共享

您可以使用控制台或通过 SQL 删除在您的账户中创建的数据共享。

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

要使用控制台删除在您的账户中创建的数据共享，请先连接到数据库，以查看在您的账户中创建的数据共享的列表。

1. 登录到 Amazon Web Services 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.amazonaws.cn/redshiftv2/)。

1. 在导航菜单上，选择**集群**，然后选择您的集群。此时会显示集群详细信息页面。

1. 选择**数据共享**。此时将会显示数据共享列表。

1. 在**在我的账户中创建的数据共享**部分中，选择**连接到数据库**。

1. 选择要删除的一个或多个数据共享，然后选择**删除**。此时会显示“删除数据共享”页面。

   删除与 Lake Formation 共享的数据共享不会自动删除 Lake Formation 中的相关权限。要删除权限，请前往 Lake Formation 控制台。

1. 键入 **Delete** 以确认删除指定的数据共享。

1. 选择 **Delete**。

删除数据共享后，数据共享使用者将失去对数据共享的访问权限。

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

您可以使用 SQL 随时通过 [DROP DATASHARE](r_DROP_DATASHARE.md) 删除数据共享对象。集群超级用户和数据共享拥有者可以删除数据共享。

以下示例将删除名为 `salesshare` 的数据共享。

```
DROP DATASHARE salesshare;
```

------