关于 Snowflake Native App Framework¶
本主题提供有关 Snowflake Native App Framework 的一般信息。
Snowflake Native App Framework 简介¶
Snowflake Native App Framework 允许您创建利用核心 Snowflake 功能的数据应用程序。Snowflake Native App Framework 允许您执行以下操作:
通过与其他 Snowflake 账户共享数据和相关业务逻辑,扩展其他 Snowflake 功能的功能。应用程序的业务逻辑可以包括 Streamlit 应用程序、存储过程和使用 Snowpark API、JavaScript 和 SQL 的编写的函数。
通过列表与使用者共享应用程序。列表可以是免费的或付费的。您可以在 Snowflake Marketplace 中分发您的应用程序并从中获利,或使用专用列表将其分发给特定使用者。
使用 Streamlit 在应用程序中包含丰富的可视化效果。
Snowflake Native App Framework 还支持增强的开发体验,其中提供:
简化的测试环境,您可以从单个账户测试您的应用程序。
强大的开发者工作流程。当您的数据和相关数据库对象保留在 Snowflake 中时,您可以使用首选的开发者工具在源代码控制中管理支持代码文件和资源。
发布应用程序的版本和补丁的功能,允许您作为提供商更改和演化应用程序的逻辑,并将其逐步发布给使用者。
支持记录结构化和非结构化事件,以便您可以对应用程序进行故障排除和监控。
Snowflake Native App Framework 的组件。¶
下图显示了 Snowflake Native App Framework 的简要视图。

Snowflake Native App Framework 围绕由其他 Snowflake 功能(包括 Snowflake Collaboration 和 Secure Data Sharing)使用的提供商和使用者的概念构建。
- 提供商
希望与其他 Snowflake 用户共享数据内容和应用程序逻辑的 Snowflake 用户。
- 使用者
希望访问提供商共享的数据内容和应用程序逻辑的 Snowflake 用户。
开发和测试应用程序包¶
为了与使用者共享数据内容和应用程序逻辑,提供商会创建应用程序包。
- 应用程序包
应用程序包封装应用程序所需的数据内容、应用程序逻辑、元数据和安装脚本。应用程序包中还包含有关为应用程序定义的版本和修补程序级别的信息。有关详细信息,请参阅 创建应用程序包。
应用程序包可以包含对提供商希望包含在应用程序中的数据内容和外部代码文件的引用。应用程序包需要一个清单文件和一个安装脚本。
- 清单文件
定义应用程序所需的配置和安装属性,包括安装脚本的位置、版本等。有关详细信息,请参阅 为应用程序包创建清单文件。
- 安装脚本
包含在使用者安装或升级应用程序时或在提供商安装或升级应用程序以进行测试时运行的 SQL 语句。安装脚本的位置在
manifest.yml
文件中指定。有关详细信息,请参阅 创建安装脚本。
发布应用程序包¶
在开发和测试应用程序包之后,提供商可以通过发布列表与使用者共享应用程序,该列表将应用程序包纳入为列表的数据产品。该列表可以是 Snowflake Marketplace 列表或专用列表。
- Snowflake Marketplace 列表
允许提供商在整个 Snowflake Data Cloud 中推广应用程序。在 Snowflake Marketplace 上提供列表,可以让提供商同时与众多使用者共享应用程序,而无需与每个使用者保持共享关系。
- 专用列表
允许提供商利用列表功能,直接与 Snowflake Native App Framework 支持的任意 Snowflake 区域 中的另一个 Snowflake 账户共享应用程序。
有关详细信息,请参阅 关于列表。
安装和管理应用程序¶
在提供商发布包含应用程序包的列表之后,使用者可发现该列表并安装应用程序。
- Snowflake Native App
Snowflake Native App 是安装在使用者账户中的数据库对象。当使用者安装 Snowflake Native App 时,Snowflake 将创建应用程序并运行安装脚本以在应用程序中创建所需的对象。有关详细信息,请参阅 在本地安装和测试应用程序。
安装应用程序后,使用者可以执行其他任务,包括:
启用日志记录和事件共享,以帮助提供商对应用程序进行故障排除。
有关使用者如何安装和管理应用程序的详细信息,请参阅 作为使用者使用应用程序。
关于使用 Snowpark Container Services 的 Snowflake Native Apps¶
|na-spcs|(具有容器的应用程序)就是一个在 Snowflake 中运行容器工作负载的 |native-app|。容器应用程序可运行 Snowpark Container Services 支持的任何容器化服务。
具有容器的应用程序利用 Snowflake Native App Framework 的所有功能,包括提供商 IP 保护、安全和治理、数据共享、货币化以及与计算资源的集成。
就像任何 Snowflake Native App 一样,具有容器的应用程序由应用程序包和应用程序对象组成。但仍然存在一些差异,如下图所示:

- 应用程序包:
若要管理容器,应用程序包必须有权访问暂存区中的服务规范文件。此文件中存在对应用程序所需容器映像的引用。这些映像必须存储在提供商账户内的映像存储库中。
- 应用程序对象:
当使用者安装具有容器的应用程序时,所创建的应用程序对象包含一个计算池,用于存储应用程序所需容器。
- 计算池:
计算池是一个或多个虚拟机 (VM) 节点的集合,Snowflake 会在这些节点上运行您的 Snowpark Container Services 作业和服务。在使用者安装具有 容器的应用程序时,他们可以向应用程序授予 CREATE COMPUTE POOL 权限,也可以手动创建计算池。
在具有容器的应用程序中保护提供商知识产权¶
在使用者账户中安装具有容器的应用程序时,服务的查询历史记录将在使用者账户中可用。为了保护提供商的机密信息,Snowflake Native App Framework 会隐去以下信息:
在 QUERY_HISTORY 视图 中隐藏查询文本。
ACCESS_HISTORY 视图 中的所有信息均是隐藏的。
服务查询的 查询配置文件 图形会折叠到单个空节点中,而不会显示完整的查询配置文件树。
提供商账户中用户的多重身份验证要求¶
根据用户类型,Snowflake 要求提供商账户中的用户进行不同类型的身份验证。
非服务用户¶
Snowflake 建议提供商账户中的用户注册 多重身份验证 (MFA) 属性设置为 SERVICE)。在未来的更新中,这些类型的用户要强制完成多重身份验证。使用 联合身份验证 和单点登录 (SSO) 的非服务用户必须在身份验证过程中启用 MFA。