以创建者身份使用 Lake Formation 托管的数据共享 - Amazon Redshift

以创建者身份使用 Lake Formation 托管的数据共享

借助 Amazon Redshift,您可以访问和分析通过 AWS Lake Formation 数据共享共享的数据。AWS Lake Formation 数据共享可实现跨 AWS 账户和 Amazon Redshift 集群的安全数据共享,而无需复制或移动底层数据。

将数据共享到 AWS Lake Formation 让您可以集中定义 Amazon Redshift 数据共享的 AWS Lake Formation 权限,并限制用户对数据共享内对象的访问。

使用 Amazon Redshift,您可以使用 AWS Lake Formation 托管的数据共享作为生产者,跨 AWS 账户和 Amazon Redshift 集群安全地共享实时数据。Lake Formation 托管的数据共享是一个对象,可让您与其它 AWS 账户和服务共享 Amazon Redshift 集群中的实时数据。

作为生产者集群或工作组管理员,请按照以下步骤将数据共享共享到 Lake Formation:

  1. 在集群中创建数据共享,并授权 AWS Lake Formation 访问数据共享。

    只有集群超级用户和数据库拥有者才可以创建数据共享。在创建过程中,每个数据共享都与数据库相关联。只有该数据库中的对象才能在该数据共享中共享。可以在具有相同或不同粒度对象的同一数据库上创建多个数据共享。集群可以创建的数据共享数量没有限制。

    CREATE DATASHARE salesshare;
  2. 将对象添加到数据共享。生产者集群或工作组管理员继续管理可用的数据共享对象。要将对象添加到数据共享中,请在添加对象之前添加 schema。当您添加 schema 时,Amazon Redshift 不会在其下添加所有对象。您必须显式添加它们。有关更多信息,请参阅更改数据共享

    ALTER DATASHARE salesshare ADD SCHEMA PUBLIC; ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift; ALTER DATASHARE salesshare ADD ALL TABLES IN SCHEMA PUBLIC;

    您还可以将视图添加到数据共享。支持的视图为标准视图、后期绑定视图和实体化视图。

    CREATE VIEW public.sales_data_summary_view AS SELECT * FROM public.tickit_sales_redshift; ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;

    使用 ALTER DATASHARE 共享 Schema 以及给定 Schema 中的表和视图。超级用户、数据共享拥有者或对数据共享具有 ALTER 或 ALL 权限的用户可以更改数据共享以向其中添加对象或从中删除对象。数据库用户应该是对象的拥有者,或者对这些对象具有 SELECT、USAGE 或 ALL 权限。

    使用 INCLUDENEW 子句将在指定 Schema 中创建的任何新表和视图添加到数据共享。只有超级用户才可以更改每个数据共享-schema 对的此属性。

    ALTER DATASHARE salesshare ADD SCHEMA PUBLIC; ALTER DATASHARE salesshare SET INCLUDENEW = TRUE FOR SCHEMA PUBLIC;
  3. 向 Lake Formation 管理员账户授予数据共享的访问权限。

    GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '012345678910' VIA DATA CATALOG;

    要撤销使用,请使用以下命令。

    REVOKE USAGE ON DATASHARE salesshare FROM ACCOUNT '012345678910' VIA DATA CATALOG;
  4. 使用 aws redshift authorize-data-share API 操作授予对 Lake Formation 数据共享的访问权限。这样可让 Lake Formation 识别服务账户中的数据共享,并管理与数据共享关联的使用者。

    aws redshift authorize-data-share --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare --consumer-identifier {"DataCatalog/<consumer-account-id>"}

    要从 Lake Formation 托管的数据共享中删除授权,请使用 aws redshift deauthorize-data-share API 操作。这样,您可以让 AWS Lake Formation 识别服务账户中的数据共享,并删除授权。

    aws redshift deauthorize-data-share --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare --consumer-identifier {"DataCatalog/<consumer-account-id>"}

    在任何时候,如果生产者集群或工作组管理员决定不再需要与使用者集群或工作组共享数据,他们可以使用 DROP DATASHARE 删除数据共享、取消对数据共享的授权或者撤销数据共享权限。系统不会自动删除 Lake Formation 中的关联权限和对象。

    DROP DATASHARE salesshare;

    授权 Lake Formation 账户管理数据共享后,Lake Formation 管理员可以发现共享的数据共享,将数据共享与数据目录 ARN 关联,并在链接到数据共享的 AWS Glue Data Catalog 中创建数据库。要使用 AWS CLI 关联数据共享,请使用命令 associate-data-share-consumer。要跨 AWS 区域共享数据共享,请在 associate-data-share-consumer 命令中指定 --region 参数,或使用 AWS 控制台来选择您的数据使用者。以下示例演示如何跨区域共享 Lake Formation 托管式数据共享。

    aws redshift associate-data-share-consumer --region <region-1> --data-share-arn 'arn:aws:redshift:us-east-1:12345678912:datashare:035c45ea-61ce-86f0-8b75-19ac6102c3b7/sample_share' --consumer-arn 'arn:aws:glue:<region-1>:111912345678:catalog'

    Lake Formation 管理员还必须创建本地资源,用于定义数据共享中的对象应如何映射到 Lake Formation 中的对象。有关发现数据共享以及创建本地资源的更多信息,请参阅管理 Amazon Redshift 数据共享中数据的权限