配置 Cross-Cloud Auto-Fulfillment¶
如果您希望将与您的列表关联的数据产品自动履行到其他 Snowflake 区域,请配置 Cross-Cloud Auto-Fulfillment。
本主题内容:
当为列表启用自动履行时,Snowflake 会根据需要自动将您的数据产品履行到使用者区域。数据产品是附加到您的列表中的共享或应用程序包。
通过使用自动履行,您可以避免手动复制数据产品和批准列表请求,从而帮助使用者更快地访问您的列表。
备注
目前,只有 Amazon Web Services (AWS) 支持在 Snowflake Native App with Snowpark Container Services 中使用 Cross-Cloud Auto-Fulfillment。有关更多信息,请参阅 带容器的应用程序的已知限制。
关于 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 会管理 安全共享区 (SSA) 的配置以及将数据产品自动履行到远程区域。SSA 由 Snowflake 管理。如果您的数据产品已经存在于远程区域,则该区域的使用者可以立即获取数据产品。
您的列表有关联的数据产品(共享或应用程序包)。该数据产品包含来自一个或多个数据库的对象以及应用程序包的应用程序逻辑。
您的数据产品自动履行到远程区域的确切时间取决于您提供列表的方式:
在指定的使用者获得您的列表后,私密列表会自动履行。
在特定区域的使用者获得列表后,Snowflake Marketplace 上共享的公开列表会自动履行。
当您的数据产品首次自动履行到新区域时,它将被转移到该区域的 SSA。与复制不同,自动履行无法保持持续同步的副本。可以使用 FULL_DATABASE 或 SUBDB 设置来配置自动履行。FULL_DATABASE 可以提供数据库中的所有对象,但不进行持续同步。SUBDB 允许按需提供所选对象。在复制中,FULL_DATABASE 确保定期同步副本,而 SUB_DATABASE 同步特定组件。
多个列表可以使用同一数据库,但该数据库仅自动履行到新区域一次。
备注
对于 Business Critical Edition (BCE),共享数据的处理不同于高安全性部署(如 VPS)。虽然 BCE 不需要为每个区域创建单独的 SSA,但它强制执行严格的数据安全性,并遵守 Tri-Secret Secure 加密等功能。
对于 Virtual Private Snowflake (VPS) 和政府特定的 Snowflake 环境等部署,每个部署都有一个单独的安全共享区 (SSA)。这可确保自动履行始终符合这些环境特有的严格安全和数据隔离要求。
初次将数据产品自动履行到某个区域的 SSA 后,对数据产品的更改将根据配置的刷新频率从您的账户同步:
如果您的数据产品是共享,则您可以在以下情况下设置刷新频率:为列表 配置 Cross-Cloud Auto-Fulfillment 时。刷新频率适用于与列表关联的数据库。如果多个列表共享数据库中的对象,则它们共享相同的刷新频率。刷新的日期和时间取决于某个区域中第一个使用者请求数据产品的时间。
如果您的数据产品是应用程序包,您可以在账户级别设置刷新频率,该频率适用于您通过自己的账户提供的每个应用程序包。
自动履行的注意事项¶
当您对列表使用自动履行功能时,请考虑以下事项:
如果您使用 AWS Marketplace、GCP Marketplace 或 Azure Marketplace 注册 Snowflake,您只能在这些云中创建账户和 SSAs。向当前云服务区域之外的区域履行列表将会失败。
根据数据产品的大小,数据产品可能需要一些时间才能提供给使用者。数据产品的大小也会影响自动履行的成本。有关成本的详细信息,请参阅 管理 Cross-Cloud Auto-Fulfillment 成本。
默认情况下,使用对象级模式 (SUBDB)。
如果列表使用的对象位于已处于完整数据库模式 (FULL_DATABASE) 的数据库中,则在 Snowsight 中将显示警告,并且数据库仍处于完整数据库模式。
备注
自动履行强制数据产品大小限制为 10TB。如果您遇到大小错误,请参阅 Cross-Cloud Auto-Fulfillment 问题排查。
评估成本影响后,您可以联系 Snowflake 支持部门,请求增加大小限制。
支持自动履行的对象¶
您的列表中包含 或引用 的数据库对象必须仅包含支持自动履行的对象。
根据您的数据产品,支持的对象有所不同:
对象 |
共享(数据库) |
应用程序包 |
---|---|---|
表 |
✔ |
✔ |
视图(常规视图,又名非安全视图) |
✔ |
✔ |
视图(物化视图) |
✔ |
✔ |
视图(安全视图) |
✔ |
✔ |
使用 REFERENCE_USAGE 权限引用存储在其他数据库中的数据的安全视图。 |
✔ |
|
动态表 |
✔ |
|CM|(仅来自应用程序包) |
数据库角色 |
✔ |
✔ |
SQL UDF |
✔ |
|CM|(从引用数据库中的共享视图调用时) |
存储过程(不用于共享) |
✔ |
✔ |
掩码和行访问策略 |
✔ |
✔ |
标签 |
✔ |
✔ |
任务(不用于共享) |
✔ |
✔ |
警报(不用于共享) |
✔ |
✔ |
密钥(不用于共享) |
✔ |
✔ |
如果此列表中的某个对象被指定为故障转移组的一部分,则不支持对其执行自动履行。请参阅 复制和故障转移简介。
如果您的数据产品包含或引用受支持对象列表以外的对象,您必须更新数据产品。
依赖于账户角色的对象的自动履行¶
自动履行不会复制账户角色。相反,SSAs 中的对象由 ACCOUNTADMIN 角色拥有。
如果您的共享或应用程序包中包含依赖于某个账户角色的对象,那么在与使用者共享时,该对象的工作方式可能会与您预期的不同。例如:
如果使用 INVOKER_ROLE 上下文函数共享包含受策略保护的数据的安全视图,由于视图所有者角色不同,策略的评估值可能与提供商账户区域中的不同。
如果共享一个安全视图,而视图引用的对象仅限于某个账户角色,例如只有 SECURITYADMIN 角色具有 SELECT 权限的表,那么当提供商账户中不具有 SECURITYADMIN 角色的用户查询时,视图可能无法展开,但当使用者账户中不具有 SECURITYADMIN 角色的用户查询时,视图会返回结果。
不要使用账户角色,而要使用数据库角色。有关更多信息,请参阅 共享受策略保护的数据 和 IS_DATABASE_ROLE_IN_SESSION。
为自动履行创建的内部 Snowflake 对象¶
Snowflake 创建以下内部对象来支持 Cross-Cloud Auto-Fulfillment:
对象类型 |
名称 |
---|---|
角色 |
SNOWFLAKE$GDS_RL AUTO_FULFILLMENT_EXECUTOR |
数据库 |
SNOWFLAKE$GDS |
复制组 |
前缀为 |
这些内部对象用于执行自动履行的任务,如在另一个区域创建安全共享区域,并创建一个数据库来存储自动履行所用的对象,如履行任务。
分别运行 SHOW DATABASES、SHOW ROLES 或 SHOW REPLICATION GROUPS 时,这些内部对象就会出现。请勿修改这些对象或将其授予其他用户或角色。
设置自动履行¶
当您配置列表并在本地区域以外的区域提供时,或者当您与其他区域的使用者账户共享私密列表时,您可以启用自动履行。请参阅 区域可用性(仅限 Marketplace 列表)。
您必须先将数据产品添加到您的列表中,然后才能设置自动履行。设置自动履行的步骤会有所不同,具体取决于您提供的数据产品以及您如何提供列表。
所需权限¶
要执行自动履行任务,您必须使用以下角色之一:
ORGADMIN 角色。
已被委派了设置自动履行权限 的 ACCOUNTADMIN 角色。
一个由具有 ACCOUNTADMIN 角色和委派权限 的用户授予了 MANAGE LISTING AUTO FULFILLMENT 权限的自定义角色。
您使用的所有角色还必须具有列表的 OWNERSHIP 或者 MODIFY 权限。
设置对象级自动履行¶
如果您想自动将与列表相关的数据产品传输到其他 Snowflake 区域,请配置 Cross-Cloud Auto-Fulfillment。为列表启用自动履行功能后,Snowflake 会根据需要自动将数据产品传输到远程区域。
为帮助降低成本和减轻管理负担,您可以使用 SUBDB 自动履行,选择使用自动履行功能仅将数据产品中的表和视图履行到远程区域。
关于对象级自动履行¶
当配置对象级自动履行时,将 SUBDB 用于支持的对象。还必须支持这些对象引用的对象。有关支持对象的列表,请参阅 支持自动履行的对象。

区域中的第一位使用者将获得列表。
自动履行将共享中的对象传输到安全共享区。
任何获得列表的使用者都可以从其 Snowflake 区域的安全共享区获取数据产品。
实施对象级自动履行功能的内容¶
当您对数据产品使用 SUBDB(对象级)自动履行功能时,只有直接授予共享或应用程序的对象或由共享或应用程序中的对象引用的对象才会实施自动履行功能。
例如:
数据产品中的对象 |
传输的内容 |
---|---|
数据库中的表和架构 |
表 |
从同一数据库中的表创建的安全视图 |
安全视图和表 |
使用 FULL_DATABASE 自动履行功能的数据库中的表 |
整个数据库 |
使用 SUBDB 自动履行功能的数据库中的表 |
表 |
使用 Snowsight 设置对象级自动履行¶
设置区域可用性(对于在 Snowflake Marketplace 上发布的列表)或添加位于另一个区域的使用者(对于私下共享的列表)时,您可以设置对象级自动履行。
创建列表。请参阅 创建并发布列表。
添加只包含受支持对象的数据产品。
设置与之共享的区域或账户,开始设置自动履行:
对于发布到 Snowflake Marketplace 的列表:
找到 Region Availability 部分并选择 Add。
对于 Region availability,保留 All regions 的默认值,或为您的列表选择 Custom regions。
对于私下共享的列表,可在远程区域添加一个使用者账户。
选择您偏好的刷新频率,以更新远程区域的数据产品。
发布列表,或将其保存为草稿。
监控和管理自动履行设置¶
管理您的列表以监控使用者使用您列表的区域、监控自动履行成本并更改列表的刷新频率。
备注
您必须使用具有配置自动履行 所需权限 的角色。
管理其他自动履行设置¶
要管理或监控列表的自动履行设置,请执行以下操作:
登录 Snowsight。
在导航菜单中,选择 Data Products » Provider Studio » Listings。
选择您要管理的列表所在的行。
从列表详细信息页面,访问自动履行设置:
对于在 Snowflake Marketplace 上提供的列表,在 Region Availability 部分,选择 Manage。
对于提供给特定使用者的列表,在 Consumer Accounts 部分,选择 ...。
选择列表中您想要管理的选项:
选择 Manage Regions & Replication 可查看已履行列表的区域以及自动履行的状态。您可以添加或移除特定区域的可用性,也可以检查状态。
选择一个区域可查看上次同步的时间戳以及有多少使用者正在访问数据。
如果某个区域内没有使用者访问过您的列表,您可以选择 Remove Region。
如果使用者在某个区域访问了您的列表产品,则您无法移除该区域。相反,如果您想要从该区域移除数据产品,则所有使用该产品的使用者都必须首先删除数据库或应用程序,或者您必须删除该列表。
选择 Update Refresh Frequency 可更新数据产品的刷新间隔和频率。
应用程序包的刷新频率必须在账户级别设置。请参阅 设置账户级别刷新频率。
共享的刷新频率在列表级别设置,但您只能为每个数据库指定一个计划。如果您将多个共享附加到包含来自同一数据库的对象的多个列表,则更新其中一个列表的刷新频率会同步更新使用同一数据库的所有其他列表的刷新频率。
您无法管理何时进行刷新。相反,某个区域中数据产品的刷新计划基于该区域中的使用者首次请求数据产品的日期和时间。
选择 Monitor Replication Cost 可监控与向其他区域履行数据产品相关的成本。请参阅 管理 Cross-Cloud Auto-Fulfillment 成本。
有关修改列表的更多详细信息,请参阅 修改已发布的列表。
设置账户级别刷新频率¶
如果您的数据产品是自动履行送到远程区域的应用程序包,则您的产品更新将按照您在账户级别设置的刷新频率进行。
如果拥有 ACCOUNTADMIN 角色,则可以使用 Snowsight 或 SQL 命令更改账户的刷新频率。执行此操作时,您可以更新您的账户发布的每个应用程序包的自动履行刷新频率。此刷新频率不会影响附有共享的列表。
使用 Snowsight 设置刷新频率¶
要使用 Snowsight 设置应用程序的刷新频率,必须使用 ACCOUNTADMIN 角色并完成以下步骤:
登录 Snowsight。
在导航菜单中,选择 Data Products » Provider Studio » Listings。
选择您要管理的列表所在的行。
从列表详细信息页面,访问自动履行设置:
对于在 Snowflake Marketplace 上提供的列表,在 Region Availability 部分,选择 Manage。
对于提供给特定使用者的列表,在 Consumer Accounts 部分,选择 ...。
选择 Update Refresh Frequency 可更新数据产品的刷新间隔和频率。
选择刷新数据产品的频率,例如每分钟或最多每 8 天刷新一次。
您选择的刷新频率会影响您账户发布的所有应用程序包。在更改刷新频率之前,您可以显示受刷新频率更改影响的所有列表。
您可以指定刷新频率,但某个区域的计划刷新时间是基于该区域的使用者首次请求您的数据产品的日期和时间。
选择 Update 以保存更新后的刷新频率。
使用 SQL 设置刷新频率¶
要使用 SQL 设置应用程序的刷新频率,必须使用 ACCOUNTADMIN 角色并运行以下命令:
ALTER ACCOUNT SET LISTING_AUTO_FULFILLMENT_REPLICATION_REFRESH_SCHEDULE = '<schedule>'
其中:
schedule
:数据产品刷新到其他区域的时间间隔。指定一个时间段,以分钟为单位,包括单位:
MINUTES
。
例如,要将您的账户发布的每个应用程序包的自动履行刷新频率设置为每 1 小时,请运行以下命令:
ALTER ACCOUNT SET LISTING_AUTO_FULFILLMENT_REPLICATION_REFRESH_SCHEDULE = '60 MINUTES'
备注
某个区域中数据产品的刷新计划基于该区域中的使用者首次请求数据产品的日期和时间。
允许账户设置 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>'
);
其中:
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>'
);
其中:
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>'
);
其中:
account_name
指定要检查的账户名称,以确定具有 ACCOUNTADMIN 角色的用户是否可以管理 Cross-Cloud Auto-Fulfillment。请参阅 账户标识符。