开始使用 Amazon CloudFormation 数据共享
您可以通过使用配置 Amazon 资源的 Amazon CloudFormation 堆栈,自动执行数据共享设置。下述 CloudFormation 堆栈设置了同一个 Amazon 账户中的两个 Amazon Redshift 集群之间的数据共享。因此,无需运行 SQL 语句,即可快速启动并运行,从而预置资源。
堆栈在您指定的集群上创建了数据共享。数据共享包括表格和只读示例数据。这些数据可以被另一个 Redshift 集群读取。
相反,如果您想通过运行 SQL 语句在 Amazon 账户开始共享数据,在不使用 CloudFormation 的情况下设置数据共享并授予权限,请参阅 在 Amazon Web Services 账户 中共享数据。
运行数据共享 CloudFormation 堆栈之前,您必须使用有权创建 IAM 角色和 Lambda 函数的用户进行登录。您还需要同一个账户中的两个 Amazon Redshift 集群。一个作为创建者,用于共享示例数据,另一个作为使用者,用于读取该数据。对于这些集群的主要要求是每个集群均需使用 RA3 节点。有关其他要求,请参阅Amazon Redshift 中的数据共享注意事项。
有关开始设置 Amazon Redshift 集群的更多信息,请参阅开始使用 Amazon Redshift。有关使用 CloudFormation 自动设置的更多信息,请参阅什么是 Amazon CloudFormation?。
使用以下过程启动您的 CloudFormation 堆栈,以进行 Amazon Redshift 数据共享。执行此操作之前,请确保同一个账户中有两个 Amazon Redshift 集群。
要启动您的 CloudFormation 堆栈,以进行 Amazon Redshift 数据共享,请执行以下操作:
单击 Launch CFN stack
(启动 CFN 堆栈),将您带到 Amazon Web Services Management Console 中的 CloudFormation 服务。 如果出现登录提示,请登录。
堆栈创建过程启动,引用存储在 Simple Storage Service(Amazon S3)中的 CloudFormation 模板文件。CloudFormation 模板指的是声明组建堆栈的 Amazon 资源的 JSON 格式文本文件。
选择 Next(下一步),输入堆栈详细信息。
-
根据 Parameters(参数)中的每个集群,输入以下内容:
-
Amazon Redshift 集群名称,例如
ra3-consumer-cluster -
特定的数据库名称,例如
dev -
数据库用户名,例如
consumeruser。
我们建议使用测试集群,因为堆栈会创建多个数据库对象。
选择 Next (下一步)。
此时将显示堆栈选项。
-
选择 Next(下一步)以接受原定设置。
在 Capabilities(功能)下,选择 I acknowledge that Amazon CloudFormation might create IAM resources(我确认 Amazon CloudFormation 可能会创建 IAM 资源)。
选择创建堆栈。
CloudFormation 使用模板构建 Amazon Redshift 堆栈大约需要十分钟时间,会创建一个名为 myproducer_share 的数据共享。堆栈在堆栈详细信息中指定的数据库中创建数据共享。只有该数据库中的对象才能共享。
如果创建堆栈时发生错误,请执行以下操作:
确保为每个 Redshift 集群输入了正确的集群名称、数据库名称和数据库用户名。
确保您的集群有 RA3 节点。
查询您创建的数据共享
要使用以下过程,请确保您拥有在所述每个集群上运行查询所需的权限。
要查询您的数据共享:
-
使用客户端工具(如 Redshift 查询编辑器),连接创建 CloudFormation 堆栈时输入的数据库创建者集群。
查询数据共享。
SHOW DATASHARES;前面的命令返回堆栈创建的数据共享的名称,名为
myproducer_share。它还会返回与数据共享myconsumer_db关联的数据库名称。复制创建者命名空间标识符,以便在后面的步骤中使用。
描述数据共享中的对象。
DESC DATASHARE myproducer_share;描述数据共享时,它会返回表和视图属性。堆栈会将包含示例数据的表和视图添加到创建者数据库中,例如
tickit_sales和tickit_sales_view。有关 Redshift 示例数据的更多信息,请参阅示例数据库。您无需委托数据共享权限即可运行查询。堆栈会授予必要权限。
使用客户端工具连接使用者集群。描述数据共享,指定创建者的命名空间。
DESC DATASHARE myproducer_share OF NAMESPACE '<namespace id>'; --specify the unique identifier for the producer namespace您可以通过指定数据共享的数据库和架构来查询数据共享中的表。
SELECT * FROM myconsumer_db.myproducer_schema.tickit_sales_view;查询会根据共享架构中的视图运行。您无法直接连接到从数据共享创建的数据库。它们是只读的。
运行包含聚合的查询。
SELECT * FROM myconsumer_db.myproducer_schema.tickit_sales ORDER BY 1,2 LIMIT 5;该查询会从示例 Tickit 数据中返回销售和卖家数据。
有关数据共享查询的更多示例,请参阅在 Amazon Web Services 账户 中共享数据。