在 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¶
要允许来自不同区域的协作者,请执行以下操作:
Clean Room 管理员必须为提供商和使用者账户中的 Clean Room 账户启用 Cross-Cloud Auto-Fulfillment。
下一步取决于您的环境:
在 UI 中创建或加入 Clean Room 时, 无需执行其他步骤。
使用 API 创建 Clean Room 时, 提供商和使用者必须采取下述额外步骤才能实现跨云使用。
为 Clean Room 账户启用 Cross-Cloud Auto-Fulfillment¶
Clean Room 管理员必须在 UI 或 API 中采取以下步骤,为 Clean Room 账户启用 Cross-Cloud Auto-Fulfillment:
输入电子邮件地址,然后选择 Continue。
输入密码。
如果您与多个 Clean Room 环境关联,请选择您正在配置的 Snowflake 账户。
选择 Admin > Snowflake Admin。
选择 Login to Snowflake,并作为具有 ACCOUNTADMIN 角色的 Snowflake 用户进行身份验证。
开启 Cross-Cloud Auto-Fulfillment。
在创建或加入 Clean Room 时,提供商或使用者无需采取其他步骤。
管理员
提供商和使用者中的管理员都必须为其 Snowflake 账户启用 Cross-Cloud Auto-Fulfillment。这可以在 Clean Room UI 中完成,也可以使用以下 API 过程完成:
USE ROLE ACCOUNTADMIN; CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.library.enable_laf_on_account();
提供商和使用者
为账户启用 Cross-Cloud Auto-Fulfillment 后,提供商和使用者在跨云区域创建或加入 Clean Room 时,都必须为 Clean Room 启用 Cross-Cloud Auto-Fulfillment。
对于基本的 Clean Room 使用, 使用者仅需调用
consumer.request_laf_cleanroom
。为了支持下述的全部功能, 双方都必须采取以下额外步骤:
使用者调用
consumer.setup_cleanroom_request_share_for_laf
。然后,提供商调用
provider.request_laf_cleanroom_requests
和provider.mount_laf_cleanroom_requests_share
。要激活提供商,使用者调用
consumer.setup_activation_share_to_laf_consumer
。全部设置完成后,可以采用与同区域协作者相同的方式实现以下附加功能:
请求日志记录
客户端模板请求
提供商运行分析
提供商激活
完整设置示例:
提供商: 提供商以标准方式创建、共享和发布 Clean Room。
USE ROLE SAMOOHA_APP_ROLE; USE WAREHOUSE APP_WH; SET cleanroom_name = 'LAF example'; CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.provider.cleanroom_init($cleanroom_name); CALL samooha_by_snowflake_local_db.provider.link_datasets($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']); 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 并为跨区域 Clean Room 设置全部功能。
-- Async request to set up Cross-Cloud Auto-Fulfillment. -- This must be done before installing the clean room. -- Continue calling until it returns status FULFILLED. This can take 10 minutes. CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.consumer.request_laf_cleanroom( $cleanroom_name,$provider_locator); -- Consumer can now install and use the clean room in a limited fashion. -- However, if they want full functionality they must take the following steps. CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.consumer.install_cleanroom( $cleanroom_name, $provider_locator); -- Set up cross-region sharing. CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.consumer.setup_cleanroom_request_share_for_laf( $cleanroom_name, $provider_data_sharing_account_locator); -- Continue with clean room configuration, but don't use full functionality until -- the provider has completed the next section.提供商: 使用者为 Clean Room 设置跨区域功能后,提供商必须在己端进行设置。
USE ROLE SAMOOHA_APP_ROLE; -- Call request_laf_cleanroom_requests until it reports the status as FULFILLED, -- then call mount_laf_cleanroom_requests_share. These steps can take 10 minutes -- or more to complete. CALL samooha_by_snowflake_local_db.provider.request_laf_cleanroom_requests( $cleanroom_name, $consumer_locator); CALL samooha_by_snowflake_local_db.provider.mount_laf_cleanroom_requests_share( $cleanroom_name, $consumer_locator);至此,全部功能可用。
与跨区域协作相关的成本¶
如果协作者在不同的区域,则需要支付额外费用。有关这些成本如何产生的更多信息,请参阅 自动履行成本。
对跨区域协作的限制¶
跨区域协作存在以下限制:
协作者必须共享同一个 Web 应用程序托管区域。例如,如果一个账户的 Web 应用程序托管区域是 Amazon Web Services:US 东部(弗吉尼亚北部),而另一个账户的 Web 托管区域是 Amazon Web Services:亚太地区(孟买),则两个 Snowflake 客户无法协作。要确定两个协作者是否共用同一个 Web 应用程序托管区域,请参阅 Web 应用程序托管。
提供商不能在 Clean Room 中使用差分隐私。
协作者无法在 Clean Room 中关联外部表和 Iceberg 表。
使用者无法运行多提供商分析。
协作者不能使用掩码策略或行访问策略。