配置 Cross-Cloud Auto-Fulfillment

如果您希望将与您的列表关联的数据产品自动复制到其他 Snowflake 区域,请配 Cross-Cloud Auto-Fulfillment。

本主题内容:

当为列表启用自动履行时,Snowflake 会根据需要自动将您的数据产品复制到使用者区域。数据产品是附加到您的列表中的共享或应用程序包。

通过使用自动履行,您可以避免手动复制数据产品和批准列表请求,从而帮助使用者更快地访问您的列表。

关于 Cross-Cloud Auto-Fulfillment

Cross-Cloud Auto-Fulfillment 让您可以根据您为列表选择的可用性和访问选项在任何受支持的 Snowflake 区域提供数据产品,而无需手动复制数据。

当列表处于草稿或已发布状态时,您可以配置和启用自动履行。当为列表启用自动履行时,Snowflake 会根据需要自动将列表的产品履行到相应的区域。

您如何在其他区域提供数据产品取决于您的数据产品以及使用者如何访问您的列表:

  • 如果您的数据产品是应用程序包,请使用自动履行功能在其他区域提供数据产品。

  • 如果您的数据产品是共享,则可在大多数情况下使用自动履行:

    • 对于 Snowflake Marketplace 上免费的或受限试用列表,您可以使用 Cross-Cloud Auto-Fulfillment 或 手动复制数据

    • 对于付费列表,您可以使用自动履行。

    • 对于与特定使用者账户共享的所有列表,Snowsight 会自动检测目标账户是否处于不同的区域并启用自动履行。您无法手动将私密列表复制到其他区域。

当您在其他区域提供数据产品时,需额外付费。请参阅 管理 Cross-Cloud Auto-Fulfillment 成本

Cross-Cloud Auto-Fulfillment 的工作原理

为列表设置了 Cross-Cloud Auto-Fulfillment 后,Snowflake 会管理安全共享区域的配置以及将数据产品复制到远程区域。如果您的数据产品已经存在于远程区域,则该区域的使用者可以立即获取数据产品。

您的列表有关联的数据产品(共享或应用程序包),并且该数据产品包含来自一个或多个数据库的对象以及应用程序包的应用程序逻辑。

  • 如果您的数据产品是共享,则包含您数据产品中对象的整个数据库将自动履行到其他区域。

  • 如果您的数据产品是应用程序包,则应用程序包中的对象和逻辑以及应用程序包引用的对象将自动履行到其他区域。

您的数据产品何时自动履行到远程区域取决于您如何提供列表:

  • 当您共享私密列表时,在指定的使用者获得您的列表后,数据库会自动填充。

  • 当您在 Snowflake Marketplace 提供列表时,在特定区域的使用者收到您的列表后,数据库会自动履行到该区域。

当您的数据产品首次自动履行到新区域时,数据库(对于共享)或数据内容和应用程序逻辑(对于应用程序包)将复制到该区域中的安全共享区。安全共享区由 Snowflake 管理。多个列表可以使用同一数据库,但该数据库仅复制到新区域一次。

初次将数据产品复制到某个区域中的安全共享区后,对数据产品的更改将根据配置的刷新频率从您的账户同步:

  • 如果您的数据产品是共享,则您可以在以下情况下设置刷新频率:为列表 配置 Cross-Cloud Auto-Fulfillment 时。刷新频率适用于与列表关联的数据库。如果多个列表共享数据库中的对象,则它们共享相同的刷新频率。刷新日期和时间取决于某个区域第一个使用者请求数据产品的时间。

  • 如果您的数据产品是应用程序包,您可以在账户级别设置刷新频率,该频率适用于您通过自己的账户提供的每个应用程序包。

在某个区域进行数据库的 Cross-Cloud Auto-Fulfillment 后,未来对数据库对象发出的请求(甚至与其他列表相关联的请求)都将通过安全共享区中的数据库得到履行。这可以降低未来的刷新和复制成本。有关成本的更多详细信息,请参阅 管理 Cross-Cloud Auto-Fulfillment 成本

自动履行的注意事项

当您对列表使用自动履行功能时,请考虑以下事项:

  • 如果您使用 AWS Marketplace、GCP Marketplace 或 Azure Marketplace 注册 Snowflake,您只能在这些云中创建账户和安全共享区。向当前云服务区域之外的区域履行列表将会失败。

  • 根据数据产品的大小,数据产品可能需要一些时间才能提供给使用者。数据产品的大小也会影响自动履行的成本。有关成本的详细信息,请参阅 管理 Cross-Cloud Auto-Fulfillment 成本

  • 您不能对数据交换中的列表使用自动履行。要将数据复制到其他区域进行数据交换,请参阅 跨区域和云平台安全共享数据

备注

自动履行强制将要复制的数据库大小限制为 10TB。在将共享附加到列表时,Snowsight 会检查数据库的大小,如果要复制的数据大小超出 10TB,则返回错误。请参阅 Cross-Cloud Auto-Fulfillment 问题排查

当列表自动填充时,如果源数据大于 10TB,使用者会收到错误消息。

评估成本影响后,您可以联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge),要求使用参数增加安全共享区的大小限制。请参阅 INITIAL_REPLICATION_SIZE_LIMIT_IN_TB

支持自动履行的对象

仅支持对特定数据库对象执行自动履行。您的共享或应用程序包中包含或引用的数据库必须仅包含支持自动履行的对象。

根据您的数据产品,支持的对象有所不同:

对象

共享(数据库)

应用程序包

视图

物化视图

使用 REFERENCE_USAGE 权限引用存储在其他数据库中的数据的安全视图。

动态表

|CM|(仅来自应用程序包)

数据库角色

SQL UDF

|CM|(从引用数据库中的共享视图调用时)

存储过程

掩码和行访问策略

标签

任务(不用于共享)

警报(不用于共享)

密钥(不用于共享)

如果此列表中的某个对象被指定为故障转移组的一部分,则不支持对其执行自动履行。请参阅 复制和故障转移简介

如果您的数据产品包含受支持对象列表以外的对象,您必须更新数据产品或手动复制数据。请参阅 手动复制数据以履行列表请求

依赖于账户角色的对象的自动履行

自动履行不会复制账户角色。相反,安全共享区域中的对象由 ACCOUNTADMIN 角色拥有。

如果您的共享或应用程序包中包含依赖于某个账户角色的对象,那么在与使用者共享时,该对象的工作方式可能会与您预期的不同。例如:

  • 如果使用 INVOKER_ROLE 上下文函数共享包含受策略保护的数据的安全视图,由于视图所有者角色不同,策略的评估值可能与提供商账户区域中的不同。

  • 如果共享一个安全视图,而视图引用的对象仅限于某个账户角色,例如只有 SECURITYADMIN 角色具有 SELECT 权限的表,那么当提供商账户中不具有 SECURITYADMIN 角色的用户查询时,视图可能无法展开,但当使用者账户中不具有 SECURITYADMIN 角色的用户查询时,视图会返回结果。

不要使用账户角色,而要使用数据库角色。有关更多信息,请参阅 共享受策略保护的数据IS_DATABASE_ROLE_IN_SESSION

Virtual Private Snowflake (VPS) 中的自动履行支持

默认情况下,VPS 不允许在 VPS 外共享数据。VPS 客户可以选择允许其组织内的所有账户接收来自使用数据共享和 Collaboration 的非 VPS 客户的数据产品,例如与 VPS 账户共享的 列表

当为 VPS 客户启用自动履行时, VPS 客户组织内的所有账户都可以成为 VPS 客户指定的非 VPS 客户共享数据的目标。VPS 客户不得通过使用自动履行的数据共享将数据发送给其他 VPS 客户或非VPS 客户。

要开始从非 VPS 客户接收数据,请联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge),并参阅 允许提供商将私密列表共享到您的 VPS 了解更多详情。

为自动履行创建的内部 Snowflake 对象

Snowflake 创建以下内部对象来支持 Cross-Cloud Auto-Fulfillment:

对象类型

名称

角色

SNOWFLAKE$GDS_RL

AUTO_FULFILLMENT_EXECUTOR

数据库

SNOWFLAKE$GDS

复制组

前缀为 SNOWFLAKE$GDS

这些内部对象用于执行自动履行的任务,如在另一个区域创建安全共享区域,并创建一个数据库来存储自动履行所用的对象,如履行任务。

分别运行 SHOW DATABASESSHOW ROLESSHOW REPLICATION GROUPS 时,这些内部对象就会出现。请勿修改这些对象或将其授予其他用户或角色。

设置自动履行

当您配置列表并在本地区域以外的区域提供时,或者当您与其他区域的使用者账户共享私密列表时,您可以启用自动履行。请参阅 区域可用性(仅限 Marketplace 列表)

您必须先将数据产品添加到您的列表中,然后才能设置自动履行。设置自动履行的步骤会有所不同,具体取决于您提供的数据产品以及您如何提供列表。

所需权限

要执行自动履行任务,您必须使用以下角色之一:

您使用的所有角色还必须具有列表的 OWNERSHIP 或者 MODIFY 权限。

为在 Snowflake Marketplace 上共享的安全共享数据产品设置自动履行

如果您的数据产品是您使用列表发布到 Snowflake Marketplace 的安全共享,请按照以下步骤设置自动履行:

  1. 登录 Snowsight

  2. 在导航菜单中,选择 Data Products » Provider Studio » Listings

  3. 选择您要设置自动履行的列表。

  4. 选择 Region Availability » Edit

  5. Region availability 选择您需要的可用性。

    • 默认情况下, All regions 已选中。选择所有区域可确保您的列表在 Snowflake 未来添加的任何区域中的可用性。

    • 对于付费列表,默认已选中 Custom regions。付费列表仅在 支持的区域 以及 Snowflake 未来添加的支持区域提供。

    • 如果您的列表有特定的区域限制,请将区域可用性更改为 Custom regions,并选择您想要提供数据产品的区域。

      当您选择自定义区域时,您的列表在所有当前 Snowflake Marketplace 区域中都可见,但使用者只能在您指定的区域获取您的数据产品。您的列表不会在任何新区域中自动变得可用。

  6. 对于 Fulfillment method,默认已选中 Automatic 履行。通过 Cross-Cloud Auto-Fulfillment,您的数据产品会自动履行到某个区域,并且仅当该区域有使用者需求时才会产生成本。

    如果您无法使用自动履行而该选项可用,请选择 Manual 手动复制您的数据产品。请参阅 手动复制数据以履行列表请求

  7. 如果您为自动履行选择 Automatic,请执行以下操作:

    1. 从下拉列表中选择刷新频率,然后输入一个值。您必须选择至少 8 天的刷新频率。

    2. 如果您没有设置默认仓库,请选择一个仓库以用于自动履行。

    3. 当您将数据产品添加到列表中时,Snowflake 会执行兼容性检查,以验证您的数据产品是否可以自动履行到其他区域。如果检查返回任何不兼容性问题,您可能需要更新您的数据产品。请参阅 Cross-Cloud Auto-Fulfillment 问题排查

    4. 选择 Save and Enable Fulfillment

      列表自动履行现已启用。在发布列表并且使用者请求数据产品之前,附于列表的数据产品不会履行到任何区域。请参阅 Cross-Cloud Auto-Fulfillment 的工作原理

  8. 如果您选择手动履行列表,请选择 Save。在发布列表之前,您必须将数据复制到您选择的每个可用区域。请参阅 手动复制数据以履行列表请求

为在 Snowflake Marketplace 上共享的应用程序包数据产品设置自动履行

如果您的数据产品是一个应用程序包且通过列表发布到 Snowflake Marketplace,请按照以下步骤设置自动履行:

  1. 登录 Snowsight

  2. 在导航菜单中,选择 Data Products » Provider Studio » Listings

  3. 选择您要设置自动履行的列表。

  4. 选择 Region Availability » Edit

  5. Region availability 选择您需要的可用性。

    • 默认情况下, All regions 已选中。选择所有区域可确保您的列表在 Snowflake 未来添加的任何区域中的可用性。

    • 对于付费列表,默认已选中 Custom regions。付费列表仅在 支持的区域 以及 Snowflake 未来添加的支持区域提供。

    • 如果您的列表有特定的区域限制,请将区域可用性更改为 Custom regions,并选择您想要提供数据产品的区域。

      当您选择自定义区域时,您的列表在所有当前 Snowflake Marketplace 区域中都可见,但使用者只能在您指定的区域获取您的数据产品。您的列表也不会在任何新区域自动变得可用。

  6. 查看在账户级别配置的刷新频率。如果您需要使用不同的刷新频率,请参阅 设置账户级别刷新频率

  7. 如果您没有设置默认仓库,请选择一个仓库以用于自动履行。

  8. 选择 Save and Enable Fulfillment

    列表自动履行现已启用。在发布列表并且使用者请求数据产品之前,附于列表的数据产品不会履行到任何区域。请参阅 Cross-Cloud Auto-Fulfillment 的工作原理

监控和管理自动履行设置

管理您的列表以监控使用者使用您列表的区域、监控复制成本并更改列表的刷新频率。

备注

您必须使用具有配置自动履行 所需权限 的角色。

管理其他自动履行设置

要管理或监控列表的自动履行设置,请执行以下操作:

  1. 登录 Snowsight。

  2. 在导航菜单中,选择 Data Products » Provider Studio » Listings

  3. 选择您要管理的列表所在的行。

  4. 从列表详细信息页面,访问自动履行设置:

    1. 对于在 Snowflake Marketplace 上提供的列表,在 Region Availability 部分,选择 Manage

    2. 对于提供给特定使用者的列表,在 Consumer Accounts 部分,选择 ...

  5. 选择列表中您想要管理的选项:

    • 选择 Manage Regions & Replication 可查看已履行列表的区域以及自动履行的状态。您可以添加或移除特定区域的可用性,也可以检查复制状态。

      选择一个区域可查看上次同步的时间戳以及有多少使用者正在访问数据。

      如果某个区域内没有使用者访问过您的列表,您可以选择 Remove Region

      如果使用者在某个区域访问了您的列表产品,则您无法移除该区域。相反,如果您想要从该区域移除数据产品,则所有使用该产品的使用者都必须首先删除数据库或应用程序,或者您必须删除该列表。

    • 选择 Update Refresh Frequency 可更新数据产品的刷新间隔和频率。

      应用程序包的刷新频率必须在账户级别设置。请参阅 设置账户级别刷新频率

      共享的刷新频率在列表级别设置,但您只能为每个数据库指定一个计划。如果您将多个共享附加到包含来自同一数据库的对象的多个列表,则更新其中一个列表的刷新频率会同步更新使用同一数据库的所有其他列表的刷新频率。

      您无法管理何时进行刷新。相反,某个区域中数据产品的刷新计划基于该区域中的使用者首次请求数据产品的日期和时间。

    • 选择 Monitor Replication Cost 可监控与向其他区域履行数据产品相关的成本。请参阅 管理 Cross-Cloud Auto-Fulfillment 成本

有关修改列表的更多详细信息,请参阅 修改已发布的列表

设置账户级别刷新频率

如果您的数据产品是自动履行送到远程区域的应用程序包,则您的产品更新将按照您在账户级别设置的刷新频率进行。

如果拥有 ACCOUNTADMIN 角色,则可以使用 Snowsight 或 SQL 命令更改账户的刷新频率。执行此操作时,您可以更新您的账户发布的每个应用程序包的自动履行刷新频率。此刷新频率不会影响附有共享的列表。

使用 Snowsight 设置刷新频率

要使用 Snowsight 设置应用程序的刷新频率,必须使用 ACCOUNTADMIN 角色并完成以下步骤:

  1. 登录 Snowsight。

  2. 在导航菜单中,选择 Data Products » Provider Studio » Listings

  3. 选择您要管理的列表所在的行。

  4. 从列表详细信息页面,访问自动履行设置:

    1. 对于在 Snowflake Marketplace 上提供的列表,在 Region Availability 部分,选择 Manage

    2. 对于提供给特定使用者的列表,在 Consumer Accounts 部分,选择 ...

  5. 选择 Update Refresh Frequency 可更新数据产品的刷新间隔和频率。

  6. 选择刷新数据产品的频率,例如每分钟或最多每 8 天刷新一次。

    您选择的刷新频率会影响您账户发布的所有应用程序包。在更改刷新频率之前,您可以显示受刷新频率更改影响的所有列表。

    您可以指定刷新频率,但某个区域的计划刷新时间是基于该区域的使用者首次请求您的数据产品的日期和时间。

  7. 选择 Update 以保存更新后的刷新频率。

使用 SQL 设置刷新频率

要使用 SQL 设置应用程序的刷新频率,必须使用 ACCOUNTADMIN 角色并运行以下命令:

ALTER ACCOUNT SET LISTING_AUTO_FULFILLMENT_REPLICATION_REFRESH_SCHEDULE = '<schedule>'
Copy

其中:

schedule

数据产品刷新到其他区域的时间间隔。指定一个时间段,以分钟为单位,包括单位: MINUTES

例如,要将您的账户发布的每个应用程序包的自动履行刷新频率设置为每 1 小时,请运行以下命令:

ALTER ACCOUNT SET LISTING_AUTO_FULFILLMENT_REPLICATION_REFRESH_SCHEDULE = '60 MINUTES'
Copy

备注

某个区域中数据产品的刷新计划基于该区域中的使用者首次请求数据产品的日期和时间。

允许账户设置 Cross-Cloud Auto-Fulfillment

如果您是组织管理员(即,如果您正在使用 ORGADMIN 角色),则将设置 Cross-Cloud Auto-Fulfillment 所需的权限委派给您组织的账户中的 ACCOUNTADMIN 角色。

将权限委派给 ACCOUNTADMIN 角色后,ACCOUNTADMIN 角色即可将 MANAGE LISTING AUTO FULFILLMENT 权限授予账户中的其他角色。请参阅 成为列表提供商

您可以委派权限、撤销权限以及确定权限是否已委派给特定账户。您只能将权限委派给您组织中的其他账户。

委派 Cross-Cloud Auto-Fulfillment 的设置权限

为了使具有 ACCOUNTADMIN 角色的用户能够设置 Cross-Cloud Auto-Fulfillment,请调用名为 SYSTEM$ENABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT 的系统函数。该系统函数的实参如下所述。

调用该系统函数需要 ORGADMIN 角色。

SELECT SYSTEM$ENABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT(
  '<account_name>'
  );
Copy

其中:

account_name

指定允许具有 ACCOUNTADMIN 角色的用户管理 Cross-Cloud Auto-Fulfillment 的账户的名称。请参阅 账户标识符

撤销 Cross-Cloud Auto-Fulfillment 的设置权限

为了防止具有 ACCOUNTADMIN 角色的用户设置 Cross-Cloud Auto-Fulfillment,请调用名为 SYSTEM$DISABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT 的系统函数。该系统函数的实参如下所述。

调用该系统函数需要 ORGADMIN 角色。

SELECT SYSTEM$DISABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT(
  '<account_name>'
  );
Copy

其中:

account_name

指定在阻止具有 ACCOUNTADMIN 角色的用户管理 Cross-Cloud Auto-Fulfillment 的账户的名称。请参阅 账户标识符

检查账户是否可以设置 Cross-Cloud Auto-Fulfillment

要确定特定账户中具有 ACCOUNTADMIN 角色的用户是否可以设置 Cross-Cloud Auto-Fulfillment,请调用名为 SYSTEM$IS_GLOBAL_DATA_SHARING_ENABLED_FOR_ACCOUNT 的系统函数。该系统函数的实参如下所述。

调用该系统函数需要 ORGADMIN 角色。

SELECT SYSTEM$IS_GLOBAL_DATA_SHARING_ENABLED_FOR_ACCOUNT(
  '<account_name>'
  );
Copy

其中:

account_name

指定要检查的账户名称,以确定具有 ACCOUNTADMIN 角色的用户是否可以管理 Cross-Cloud Auto-Fulfillment。请参阅 账户标识符

语言: 中文