开始使用 AWS CloudFormation 联合查询 PostgreSQL
您可以使用联合查询,以跨操作数据库进行查询。在本入门指南中,您可以使用示例 AWS CloudFormation 堆栈自动进行设置,以启用从 Amazon Redshift 集群到 Aurora PostgreSQL 无服务器数据库的联合查询。无需运行 SQL 语句,即可快速启动并运行,从而配置资源。
堆栈创建了一个外部架构,引用了 Aurora PostgreSQL 实例,其中包括带示例数据的表。您可以从 Redshift 集群中查询外部架构中的表。
相反,如果您想通过运行 SQL 语句来设置外部架构,以便开始使用联合查询,而不使用 CloudFormation,请参阅开始使用对 PostgreSQL 的联合查询。
运行 CloudFormation 堆栈进行联合查询之前,请确保您拥有已开启数据 API 的 Amazon Aurora PostgreSQL 兼容版无服务器数据库。您可以在数据库属性中打开数据 API。如果找不到设置,请仔细检查是否正在运行 Aurora PostgreSQL 的无服务器实例。另外,请确保您有一个使用 RA3 节点的 Amazon Redshift 集群。我们建议 Redshift 集群和无服务器 Aurora PostgreSQL 实例位于相同的 Virtual Private Cloud (VPC) 和子网组中。这样一来,您就可以将 Amazon Redshift 集群的安全组添加到 Aurora PostgreSQL 数据库实例的安全组的入站规则中。
有关开始设置 Amazon Redshift 集群的更多信息,请参阅 Amazon Redshift 预置数据仓库入门。有关使用 CloudFormation 设置资源的更多信息,请参阅 AWS CloudFormation 是什么?。有关设置 Aurora DB 集群数据库的更多信息,请参阅创建 Aurora DB cluster Serverless v1 数据库集群。
为 Redshift 联合查询启动 CloudFormation 堆栈
使用以下过程启动适用于 Amazon Redshift 的 CloudFormation 堆栈,以启用联合查询。执行此操作之前,请确保您已设置 Amazon Redshift 集群和无服务器 Aurora PostgreSQL 实例。
启动 CloudFormation 堆栈,以进行联合查询
在这里单击启动 CFN 堆栈
,以启动 AWS Management Console 中的 CloudFormation 服务。 如果出现登录提示,请登录。
堆栈创建过程启动,引用存储在 Amazon S3 中的 CloudFormation 模板文件。CloudFormation 模板指的是声明组建堆栈的 AWS 资源的 JSON 格式文本文件。
选择下一步,输入堆栈详细信息。
-
在集群参数下,请输入以下内容:
-
Amazon Redshift 集群名称,例如
ra3-consumer-cluster
-
特定的数据库名称,例如
dev
-
数据库用户名,例如
consumeruser
同时输入 Aurora DB 集群数据库参数,包括用户、数据库名称、端口和端点。我们建议使用测试集群以及测试无服务器数据库,因为堆栈会创建多个数据库对象。
选择下一步。
此时将显示堆栈选项。
-
选择下一步以接受默认设置。
在功能下,选择我确认 AWS CloudFormation 可能会创建 IAM 资源。
选择创建堆栈。
选择创建堆栈。CloudFormation 配置模板资源(大约需要 10 分钟)并创建外部架构。
如果创建堆栈时发生错误,请执行以下操作:
查看 CloudFormation 事件选项卡,以获取可以帮助解决错误的信息。
确保您输入了正确的 Redshift 集群名称、数据库名称和数据库用户名。同时检查 Aurora PostgreSQL 实例的参数。
确保您的集群有 RA3 节点。
确保您的数据库和 Redshift 集群位于同一子网和安全组中。
从外部架构中查询数据
要使用以下程序,请确保您拥有在所述集群和数据库运行查询所需的权限。
要通过联合查询查询外部数据库
使用客户端工具(如 Redshift 查询编辑器)连接创建堆栈时输入的 Redshift 数据库。
查询堆栈创建的外部架构。
select * from svv_external_schemas;
SVV_EXTERNAL_SCHEMAS 视图返回有关可用外部架构的信息。在这种情况下,返回堆栈创建的外部架构,
myfederated_schema
。如有任何设置,可能还会返回其它外部架构。该视图同时返回该架构的关联数据库。数据库是您在创建堆栈时输入的 Aurora DB 集群数据库。堆栈将一个名为category
的表,以及另一个名为sales
的表添加到 Aurora DB 集群数据库中。-
在引用 Aurora PostgreSQL 数据库的外部架构中对表运行 SQL 查询。以下示例显示了一个查询。
SELECT count(*) FROM myfederated_schema.category;
category
表返回了几条记录。您也可以从sales
表返回记录。SELECT count(*) FROM myfederated_schema.sales;
有关更多示例,请参阅 使用联合查询的示例。