

 从补丁 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/)。

# 在 Amazon Redshift 中关联来自不同 AWS 账户的数据共享
<a name="writes-associating"></a>

使用 Amazon Redshift，您可以关联其它 AWS 账户共享的数据共享，从而实现跨组织边界的无缝、安全的数据共享。数据共享是可共享的数据库对象，封装了来自一个或多个 Amazon Redshift 数据库的数据。以下各节演示了关联数据共享的过程。

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

作为使用者管理员，您可以将从其它账户共享的一个或多个数据共享与您的整个 AWS 账户或您账户中的特定命名空间关联。

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

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`，或者干脆不指定值，则使用者的写入权限将被撤销。

------