

 从补丁 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 CloudFormation 联合查询 PostgreSQL
<a name="getting-started-federated-CF"></a>

您可以使用联合查询，以跨操作数据库进行查询。在本入门指南中，您可以使用示例 AWS CloudFormation 堆栈自动进行设置，以启用从 Amazon Redshift 集群到 Aurora PostgreSQL 无服务器数据库的联合查询。无需运行 SQL 语句，即可快速启动并运行，从而配置资源。

堆栈创建了一个外部架构，引用了 Aurora PostgreSQL 实例，其中包括带示例数据的表。您可以从 Redshift 集群中查询外部架构中的表。

相反，如果您想通过运行 SQL 语句来设置外部架构，以便开始使用联合查询，而不使用 CloudFormation，请参阅[开始使用对 PostgreSQL 的联合查询](getting-started-federated.md)。

运行 CloudFormation 堆栈进行联合查询之前，请确保您拥有已开启数据 API 的 Amazon Aurora PostgreSQL 兼容版无服务器数据库。您可以在数据库属性中打开数据 API。如果找不到设置，请仔细检查是否正在运行 Aurora PostgreSQL 的无服务器实例。另外，请确保您有一个使用 RG 或 RA3 节点的 Amazon Redshift 集群。我们建议 Redshift 集群和无服务器 Aurora PostgreSQL 实例位于相同的 Virtual Private Cloud (VPC) 和子网组中。这样一来，您就可以将 Amazon Redshift 集群的安全组添加到 Aurora PostgreSQL 数据库实例的安全组的入站规则中。

有关开始设置 Amazon Redshift 集群的更多信息，请参阅 [Amazon Redshift 预置数据仓库入门](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html)。有关使用 CloudFormation 设置资源的更多信息，请参阅 [AWS CloudFormation 是什么？](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)。有关设置 Aurora DB 集群数据库的更多信息，请参阅[创建 Aurora DB cluster Serverless v1 数据库集群](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.create.html)。

## 为 Redshift 联合查询启动 CloudFormation 堆栈
<a name="getting-started-federated-CF-stack"></a>

使用以下过程启动适用于 Amazon Redshift 的 CloudFormation 堆栈，以启用联合查询。执行此操作之前，请确保您已设置 Amazon Redshift 集群和无服务器 Aurora PostgreSQL 实例。

**启动 CloudFormation 堆栈，以进行联合查询**

1. 在这里单击[https://console.aws.amazon.com/cloudformation/home?#/stacks/new?stackName=FederatedQuery&templateURL=https://s3.amazonaws.com/redshift-downloads/docs-downloads/FederatedQuery.yml](https://console.aws.amazon.com/cloudformation/home?#/stacks/new?stackName=FederatedQuery&templateURL=https://s3.amazonaws.com/redshift-downloads/docs-downloads/FederatedQuery.yml)，以启动 AWS 管理控制台 中的 CloudFormation 服务。

   如果出现登录提示，请登录。

   堆栈创建过程启动，引用存储在 Amazon S3 中的 CloudFormation 模板文件。CloudFormation *模板*指的是声明组建堆栈的 AWS 资源的 JSON 格式文本文件。

1. 选择**下一步**，输入堆栈详细信息。

1. 在集群**参数**下，请输入以下内容：
   + Amazon Redshift 集群名称，例如 **ra3-consumer-cluster**
   + 特定的数据库名称，例如 **dev**
   + 数据库用户名，例如 **consumeruser**

   同时输入 Aurora DB 集群数据库参数，包括用户、数据库名称、端口和端点。我们建议使用测试集群以及测试无服务器数据库，因为堆栈会创建多个数据库对象。

   选择**下一步**。

   此时将显示堆栈选项。

1. 选择**下一步**以接受默认设置。

1. 在 **Capabilities**（功能）下，选择 **I acknowledge that AWS CloudFormation might create IAM resources**（我确认 AWS CloudFormation 可能会创建 IAM 资源）。

1. 选择**创建堆栈**。

选择**创建堆栈**。CloudFormation 配置模板资源（大约需要 10 分钟）并创建外部架构。

如果创建堆栈时发生错误，请执行以下操作：
+ 查看 CloudFormation **事件**选项卡，以获取可以帮助解决错误的信息。
+ 确保您输入了正确的 Redshift 集群名称、数据库名称和数据库用户名。同时检查 Aurora PostgreSQL 实例的参数。
+ 确保您的集群有 RG 或 RA3 节点。
+ 确保您的数据库和 Redshift 集群位于同一子网和安全组中。

## 从外部架构中查询数据
<a name="getting-started-federated-CF-stack-query"></a>

要使用以下程序，请确保您拥有在所述集群和数据库运行查询所需的权限。

**要通过联合查询查询外部数据库**

1. 使用客户端工具（如 Redshift 查询编辑器）连接创建堆栈时输入的 Redshift 数据库。

1. 查询堆栈创建的外部架构。

   ```
   select * from svv_external_schemas;
   ```

   [SVV\_EXTERNAL\_SCHEMAS](r_SVV_EXTERNAL_SCHEMAS.md) 视图返回有关可用外部架构的信息。在这种情况下，返回堆栈创建的外部架构，`myfederated_schema`。如有任何设置，可能还会返回其它外部架构。该视图同时返回该架构的关联数据库。数据库是您在创建堆栈时输入的 Aurora DB 集群数据库。堆栈将一个名为 `category` 的表，以及另一个名为 `sales` 的表添加到 Aurora DB 集群数据库中。

1. 在引用 Aurora PostgreSQL 数据库的外部架构中对表运行 SQL 查询。以下示例显示了一个查询。

   ```
   SELECT count(*) FROM myfederated_schema.category;
   ```

   `category` 表返回了几条记录。您也可以从 `sales` 表返回记录。

   ```
   SELECT count(*) FROM myfederated_schema.sales;
   ```

   有关更多示例，请参阅 [使用联合查询的示例](federated_query_example.md)。