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

以创建者的身份使用 Amazon Web Services Data Exchange 数据共享

如果您是创建者集群管理员,请按照以下步骤管理 Amazon Redshift 控制台上的 Amazon Web Services Data Exchange 数据共享:

  1. 在集群中创建数据共享,以共享 Amazon Web Services Data Exchange 上的数据,并授予 Amazon Web Services Data Exchange 数据共享访问权限。

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

    您还可以使用 Amazon Redshift 控制台创建数据共享。有关更多信息,请参阅 创建数据共享

    运行 CREATE DATASHARE 语句时,使用 MANAGEDBY ADX 选项隐式授予 Amazon Web Services Data Exchange 对数据共享的访问权限。这表明 Amazon Web Services Data Exchange 管理此数据共享。创建新的数据共享时,您只能使用 MANAGEDBY ADX 选项。不能使用 ALTER DATASHARE 语句修改现有的数据共享,以添加 MANAGEDBY ADX 选项。使用 MANAGEDBY ADX 选项创建数据共享后,只有 Amazon Web Services Data Exchange 可以访问和管理数据共享。

    CREATE DATASHARE salesshare [[SET] MANAGEDBY [=] {ADX} ];
  2. 将对象添加到数据共享中。创建者管理员继续管理 Amazon Web Services Data Exchange 数据共享中可用的数据共享对象。

    要将对象添加到数据共享中,请在添加对象之前添加 schema。当您添加 schema 时,Amazon Redshift 不会在其下添加所有对象。您必须显式添加它们。有关更多信息,请参阅 ALTER DATASHARE

    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.sales_data_summary_view;

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

    使用 INCLUDENEW 子句将在指定 schema 中创建的任何未来表、视图或 SQL 用户定义函数 (UDF) 添加到数据共享中。只有超级用户才可以更改每个数据共享-schema 对的此属性。

    ALTER DATASHARE salesshare ADD SCHEMA PUBLIC; ALTER DATASHARE salesshare SET INCLUDENEW = TRUE FOR SCHEMA PUBLIC;

    您还可以使用 Amazon Redshift 控制台添加或从数据共享中删除对象。有关更多信息,请参阅将数据共享对象添加到数据共享从数据共享中删除数据共享对象编辑 Amazon Web Services Data Exchange 数据共享

  3. 要授权对 Amazon Web Services Data Exchange 数据共享的访问权限,请执行以下操作之一:

    • 通过使用 aws redshift authorize-data-share API 中的 ADX 关键词明确授权对 Amazon Web Services Data Exchange 数据共享的访问权限。这样可允许 Amazon Web Services Data Exchange 识别服务账户中的数据共享,并管理与数据共享关联的使用者。

      aws redshift authorize-data-share --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare --consumer-identifier ADX

      您可以将条件密钥 ConsumerIdentifier 用于 AuthorizeDataShareDeauthorizeDataShare,以明确允许或拒绝 Amazon Web Services Data Exchange 调用 IAM 策略中的两个 API。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Deny", "Action": [ "redshift:AuthorizeDataShare", "redshift:DeauthorizeDataShare" ], "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { "redshift:ConsumerIdentifier": "ADX" } } } ] }
    • 使用 Amazon Redshift 控制台授权或删除授权 Amazon Web Services Data Exchange 数据共享。有关更多信息,请参阅 授权或删除数据共享中的授权

    • 或者,您可以在将数据共享导入 Amazon Web Services Data Exchange 数据集时隐式授予访问 Amazon Web Services Data Exchange 数据共享的权限。

    要删除 Amazon Web Services Data Exchange 数据共享访问授权,请使用 aws redshift deauthorize-data-share API 操作中的 ADX 关键词。这样即可允许 Amazon Web Services Data Exchange 识别服务账户中的数据共享,并从数据共享中删除关联。

    aws redshift deauthorize-data-share --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare --consumer-identifier ADX
  4. 列出在集群中创建的数据共享,并查看数据共享的内容。

    以下示例显示名为 SalesShare 的数据共享的信息。有关更多信息,请参阅DESC DATASHARESHOW DATASHARES

    DESC DATASHARE salesshare; producer_account | producer_namespace | share_type | share_name | object_type | object_name | include_new -------------------+--------------------------------------+------------+------------+-------------+--------------------------------+------------------- 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_users_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_venue_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_category_redshift| 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_date_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_event_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_listing_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_sales_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | schema | public | t 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | view | public.sales_data_summary_view |

    以下示例显示创建器集群中的出站数据共享。

    SHOW DATASHARES LIKE 'sales%';

    该输出值看上去类似于以下内容。

    share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account | producer_namespace -----------+--------------+-----------------+-------------------+------------+---------------------+----------------------+-----------+------------------+--------------------------------------- salesshare | 100 | dev | | OUTBOUND | 2020-12-09 02:27:08 | True | | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d

    有关更多信息,请参阅DESC DATASHARESHOW DATASHARES

    您还可以使用 SVV_DATASHARESSVV_DATASHARE_CONSUMERSSVV_DATASHARE_OBJECTS 来查看数据共享、数据共享内的对象以及数据共享使用者。

  5. 删除数据共享。我们建议您不要使用 DROP DATASHARE 语句删除共享给其他 Amazon Web Services 账户 的 Amazon Web Services Data Exchange 数据共享。这些账户将失去对数据共享的访问权限。此操作不可逆。这可能会违反 Amazon Web Services Data Exchange 中的数据产品优惠条款。如果您要删除 Amazon Web Services Data Exchange 数据共享,请参阅DROP DATASHARE 使用说明

    以下示例将删除名为 SalesShare 的数据共享。

    DROP DATASHARE salesshare; ERROR: Drop of ADX-managed datashare salesshare requires session variable datashare_break_glass_session_var to be set to value '620c871f890c49'

    要允许删除 Amazon Web Services Data Exchange 数据共享,请设置 datashare_break_glass_session_var 变量,然后再次运行 DROP DATASHARE 语句。如果您要删除 Amazon Web Services Data Exchange 数据共享,请参阅DROP DATASHARE 使用说明

    您还可以使用 Amazon Redshift 控制台删除数据共享。有关更多信息,请参阅 删除在您的账户中创建的 Amazon Web Services Data Exchange 数据共享

  6. 使用 ALTER DATASHARE 可以在任何时间点从数据共享中删除对象。使用 REVOKE USAGE ON 可撤销某些使用者对数据共享的权限。它可以撤消对数据共享内的对象的 USAGE 权限,并立即停止对所有使用者集群的访问。列出数据共享和元数据查询(如列出数据库和表)不会在撤销访问权限后返回共享对象。

    ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;

    您还可以使用 Amazon Redshift 控制台编辑数据共享。有关更多信息,请参阅 编辑 Amazon Web Services Data Exchange 数据共享

  7. 授予或撤消 Amazon Web Services Data Exchange 数据共享的 GRANT USAGE。您不能授予或撤消使用 Amazon Web Services Data Exchange 数据共享的 GRANT USAGE。以下示例显示了在向 Amazon Web Services 账户授予对数据共享(由 Amazon Web Services Data Exchange 管理)的 GRANT USAGE 权限时出现的错误。

    CREATE DATASHARE salesshare MANAGEDBY ADX;
    GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '012345678910'; ERROR: Permission denied to add/remove consumer to/from datashare salesshare. Datashare consumers are managed by ADX.

    有关更多信息,请参阅 GRANTREVOKE

如果您是创建者集群管理员,请按照以下步骤创建数据共享产品,并在 Amazon Web Services Data Exchange 控制台上发布: