在 Snowflake Data Clean Rooms 中管理 Cross-Cloud Auto-Fulfillment¶
关于 Cross-Cloud Auto-Fulfillment¶
在默认的 Clean Room 环境中,Clean Room 只能与同一云区域中的账户共享。也就是说,提供商和使用者必须位于同一云区域中。
如果协作者的账户与您的账户分别位于不同的区域,且您想要与其协作,则必须为 Clean Room 环境和 Clean Room 启用 Cross-Cloud Auto-Fulfillment,如本页所示。
您可以通过运行 SELECT CURRENT_REGION();
确定您自己的云区域
备注
Cross-Cloud Auto-Fulfillment 有时被称为 LAF,代表 列表自动履行。
启用 Cross-Cloud Auto-Fulfillment¶
您可以使用 API 或 UI 启用 Cross-Cloud Auto-Fulfillment。但请注意 跨区域协作的局限性。
先决条件¶
要为账户启用 Cross-Cloud Auto-Fulfillment,组织管理员必须先通过调用 SYSTEM$ENABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT 在账户上启用 Cross-Cloud Auto-Fulfillment。这既适用于提供商,也适用于使用者。
在 UI 中启用 Cross-Cloud Auto-Fulfillment¶
Clean Room 管理员按照以下步骤在账户级别为所有新的和现有的 Clean Room 启用 Cross-Cloud Auto-Fulfillment:
在 API 中启用 Cross-Cloud Auto-Fulfillment¶
即使您已经在 UI 中启用了 Cross-Cloud Auto-Fulfillment,也可以按照这些说明在 API 中创建或安装 Clean Room。
账户管理员¶
要使用 API 为账户启用 Cross-Cloud Auto-Fulfillment,提供商和使用者账户中的管理员都必须使用 ACCOUNTADMIN 角色运行以下示例代码。对于每个账户,仅需运行一次。
USE ROLE ACCOUNTADMIN;
-- Optionally check first to see if cross-cloud is enabled on the account.
CALL samooha_by_snowflake_local_db.library.is_laf_enabled_on_account();
-- If not, enable it.
CALL samooha_by_snowflake_local_db.library.enable_laf_on_account();
提供商和使用者¶
为账户启用 Cross-Cloud Auto-Fulfillment 后,以下是在创建或安装 Clean Room 时启用 Cross-Cloud Auto-Fulfillment 的方法:
提供商 通过调用
provider.create_or_update_cleanroom_listing
以正常方式发布 Clean Room。使用者 通过调用
consumer.install_cleanroom
安装 Clean Room。如果使用者与提供商位于不同的云区域,则consumer.install_cleanroom
会失败并显示一条消息,提示正在安装 Cross-Cloud Auto-Fulfillment 副本。使用者 继续调用
consumer.install_cleanroom
直至返回“成功”。安装只需几分钟时间。
此时,使用者可以使用基本的 Clean Room 功能。如果使用者需要有关客户端模板请求、提供商运行分析和提供商激活的支持,请执行以下额外步骤:
The provider calls
provider.mount_request_logs_for_all_consumers
to enable communication from the consumer to the provider.
完整设置代码示例:
提供商: 提供商以标准方式创建、共享和发布 Clean Room。
USE WAREHOUSE APP_WH; USE ROLE SAMOOHA_APP_ROLE; SET cleanroom_name = 'LAF example'; SET consumer_locator = '<CONSUMER_LOCATOR>'; SET consumer_account_name = '<CONSUMER_DATA_SHARING_ACCOUNT_ID>'; CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.provider.cleanroom_init($cleanroom_name); CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.provider.set_default_release_directive( $cleanroom_name, 'V1_0', '0'); CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.provider.add_consumers( $cleanroom_name, $consumer_locator, $consumer_account_name); CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.provider.create_or_update_cleanroom_listing($cleanroom_name);
使用者: 使用者安装 Clean Room。
USE WAREHOUSE APP_WH; USE ROLE samooha_app_role; SET cleanroom_name = 'LAF example'; SET provider_locator = '<PROVIDER_LOCATOR>'; -- Initial call starts the process and returns a cross-cloud/region replication failure. -- Continue to call this procedure until it returns a success message. CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.consumer.install_cleanroom( $cleanroom_name, $provider_locator); -- Continue with standard clean room configuration and use. -- Consumer can run analyses, but requests to submit a template aren't -- supported until the provider calls ``provider.mount_request_logs_for_all_consumers``. ...
提供商: 使用者安装 Clean Room 后,如果要在提供商与使用者之间启用基于请求的操作,则提供商必须挂载请求共享。基于请求的操作包括运行分析的提供商请求,以及向 Clean Room 添加模板的使用者请求。
-- Call mount_request_logs_for_all_consumers until it reports success. provider.mount_request_logs_for_all_consumers($cleanroom_name);
此时可以使用完整的提供商/使用者功能。
跨区域账户的刷新频率¶
当提供者和使用者位于不同的云区域时,请求和数据会受制于复制频率设置。
Requests and data from provider to consumer
所有从提供商到使用者的数据和请求都按照账户刷新频率进行刷新(默认为每 24 小时一次)。这包括创建或更新 Clean Room、更改提供商数据、请求权限(例如提供商运行的分析)以及对请求的批准(例如使用者模板)。
从提供商到使用者的请求频率由您 账户的复制刷新时间表控制。
从使用者到提供商的请求和数据
下表显示了使用者向提供商发送的数据和请求的刷新频率:
数据 |
刷新率 |
---|---|
请求、审批和变更,例如:
|
|
Provider activation data: |
|
提供商 Clean Room 数据,例如以下内容:
|
|
您可以 更改使用者到提供商的请求和数据的刷新频率。
与跨区域协作相关的成本¶
如果协作者在不同的区域,则需要支付额外费用。有关这些成本如何产生的更多信息,请参阅 自动履行成本。
对跨区域协作的限制¶
跨区域协作存在以下限制:
使用 Clean Room UI 时,协作者必须共享 同一个 UI 托管区域。例如,如果一个账户的 UI 托管区域是 Amazon Web Services:US 东部(弗吉尼亚北部),而另一个账户的 UI 托管区域是 Amazon Web Services:亚太地区(孟买),则这两个账户无法在 UI 中协作。但是,如果账户和 Clean Room 都针对 Cross-Cloud Auto-Fulfillment 进行了配置(如本页所述),则它们 可以 使用 API 进行协作。
提供商不能在 Clean Room 中使用差分隐私。
协作者无法在 Clean Room 中关联外部表和 Iceberg 表。
使用者无法运行多提供商分析。
协作者不能使用掩码策略或行访问策略。