开始使用 Amazon CloudFormation 数据共享 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

开始使用 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 数据共享,请执行以下操作:
  1. 单击 Launch CFN stack(启动 CFN 堆栈),将您带到 Amazon Web Services Management Console 中的 CloudFormation 服务。

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

    堆栈创建过程启动,引用存储在 Simple Storage Service(Amazon S3)中的 CloudFormation 模板文件。CloudFormation 模板指的是声明组建堆栈的 Amazon 资源的 JSON 格式文本文件。

  2. 选择 Next(下一步),输入堆栈详细信息。

  3. 根据 Parameters(参数)中的每个集群,输入以下内容:

    • Amazon Redshift 集群名称,例如 ra3-consumer-cluster

    • 特定的数据库名称,例如 dev

    • 数据库用户名,例如 consumeruser

    我们建议使用测试集群,因为堆栈会创建多个数据库对象。

    选择 Next (下一步)

    此时将显示堆栈选项。

  4. 选择 Next(下一步)以接受原定设置。

  5. Capabilities(功能)下,选择 I acknowledge that Amazon CloudFormation might create IAM resources(我确认 Amazon CloudFormation 可能会创建 IAM 资源)。

  6. 选择创建堆栈

CloudFormation 使用模板构建 Amazon Redshift 堆栈大约需要十分钟时间,会创建一个名为 myproducer_share 的数据共享。堆栈在堆栈详细信息中指定的数据库中创建数据共享。只有该数据库中的对象才能共享。

如果创建堆栈时发生错误,请执行以下操作:

  • 确保为每个 Redshift 集群输入了正确的集群名称、数据库名称和数据库用户名。

  • 确保您的集群有 RA3 节点。

查询您创建的数据共享

要使用以下过程,请确保您拥有在所述每个集群上运行查询所需的权限。

要查询您的数据共享:
  1. 使用客户端工具(如 Redshift 查询编辑器),连接创建 CloudFormation 堆栈时输入的数据库创建者集群。

  2. 查询数据共享。

    SHOW DATASHARES;

    前面的命令返回堆栈创建的数据共享的名称,名为 myproducer_share。它还会返回与数据共享 myconsumer_db 关联的数据库名称。

    复制创建者命名空间标识符,以便在后面的步骤中使用。

  3. 描述数据共享中的对象。

    DESC DATASHARE myproducer_share;

    描述数据共享时,它会返回表和视图属性。堆栈会将包含示例数据的表和视图添加到创建者数据库中,例如 tickit_salestickit_sales_view。有关 Redshift 示例数据的更多信息,请参阅示例数据库

    您无需委托数据共享权限即可运行查询。堆栈会授予必要权限。

  4. 使用客户端工具连接使用者集群。描述数据共享,指定创建者的命名空间。

    DESC DATASHARE myproducer_share OF NAMESPACE '<namespace id>'; --specify the unique identifier for the producer namespace
  5. 您可以通过指定数据共享的数据库和架构来查询数据共享中的表。

    SELECT * FROM myconsumer_db.myproducer_schema.tickit_sales_view;

    查询会根据共享架构中的视图运行。您无法直接连接到从数据共享创建的数据库。它们是只读的。

  6. 运行包含聚合的查询。

    SELECT * FROM myconsumer_db.myproducer_schema.tickit_sales ORDER BY 1,2 LIMIT 5;

    该查询会从示例 Tickit 数据中返回销售和卖家数据。

    有关数据共享查询的更多示例,请参阅在 Amazon Web Services 账户 中共享数据