向 Snowflake Marketplace 发布应用程序的准则¶
本主题描述了向 Snowflake Marketplace 发布 Snowflake Native App 的标准。
向 Snowflake Marketplace 发布应用程序¶
当您的应用程序包准备好在 Snowflake Marketplace 上发布时,必须将其提交给 Snowflake 以进行审批。
备注
除了在应用程序包的 DISTRIBUTION 属性设置为 EXTERNAL 时运行的 自动化安全扫描 之外,在 Snowflake Marketplace 上发布应用程序时还需要完成审批流程。
在创建列表之前,请确认您了解 强制执行的要求,并确保您的应用程序包符合每项要求。如果应用程序包不符合这些要求,您的提交可能会遭到拒绝。
如果您收到针对所提交应用程序包的拒绝通知,请执行建议的更改,然后重新提交应用程序包以供审批。
向 Snowflake Marketplace 提交 Snowflake Native Apps 的准则¶
Snowflake 提供的平台允许提供商构建和分发应用程序并从中获利。
Snowflake 审查成确保了发布到 Snowflake Marketplace 的应用程序的质量。为确保简化审查流程,针对发布到 Snowflake Marketplace 的应用程序,Snowflake 提供了以下要求和准则。
- 立即可供使用
在安装应用程序之时,必须在使用者账户中提供所有应用程序功能。例如,当使用者在其账户中安装应用程序时,必须可以使用所有应用程序功能,而无需使用者安装其他组件。
- 独立
应用程序必须在 Snowflake 上提供产品体验,并通过 Snowflake 功能满足外部需求。
- 以数据为中心
应用程序应该基于以数据为中心的用例,此类用例应利用存储在 Snowflake 中的数据。
- 透明且简单
应用程序必须使用 Snowflake 功能来披露应用程序的资源和访问要求,并简化使用者的配置流程。
强制要求¶
Snowflake 使用以下准则来确定 Snowflake Native App 是否符合在 Snowflake Marketplace 上发布的要求。向 Snowflake Marketplake 提交附有应用程序包的列表时,这些要求将得到验证。
立即可供使用
应用程序不能是宣传功能的外壳应用程序。
应用程序必须包含使用应用程序功能的清晰框架和说明。
应用程序不应崩溃、冻结或存在其他功能异常。
应用程序必须列出所有必需的凭据,提供商在提交应用程序以供测试时必须与 Snowflake 共享所需凭据。
应用程序必须立即可操作,允许使用者完全安装和配置应用程序,而无需联系提供商。
独立
应用程序不得将使用者重定向到外部服务以启用应用程序功能。
安装后,必须可直接从 Snowflake 访问应用程序界面。
应用程序不能要求使用者在 Snowflake 用户账户中创建用户或角色来提供对外部服务的访问权限。
应用程序不能使用 Snowflake Marketplace 作为分发平台来交叉销售外部应用程序或服务。
以数据为中心
应用程序必须通过以下方式之一来利用 Snowflake 数据:
共享来自应用程序提供商账户的数据。
使用来自 Snowflake Marketplace 的数据集。
访问消费者账户中的数据。
透明
应用程序包的清单文件中必须列出应用程序所需的全部账户级别权限和引用。
Snowflake Native App 的所有资源需求必须在该应用程序的 marketplace.yml 文件中列出。应用程序必须在安装和设置过程中创建这些资源。
应用程序包清单文件中所列的所有账户级别权限和引用均必须通过|sf-web-interface|或 Python Permission SDK 向使用者申请。
应用程序必须提供自述文件。不包含 Streamlit 或自定义用户界面的应用程序必须在自述文件中包含以下信息:
对应用程序功能的描述。
安装应用程序后,使用者为配置应用程序而必须执行的步骤。
应用程序使用的存储过程和用户定义的函数。
应用程序所需的权限。
向使用者展示如何使用应用程序的示例 SQL 命令。
所有必需的 SQL 命令都必须使用 Snowflake 传送并格式化为代码块。
如果应用程序提供示例数据,则必须包括有关如何使用示例数据的过程。
发布 Snowflake Native App 时的最佳实践¶
除了向 Snowflake Marketplace 提交应用程序包的要求外,Snowflake 还建议在发布 Snowflake Native App 时采用以下最佳实践:
确保将所有必要的文件上传到您提交的应用程序版本的指定暂存区,包括:
manifest.yml
文件。安装脚本。
readme.md
文件。应用程序包需要的任何外部存储过程或用户定义的函数。
应用程序包需要的任何 Streamlit 文件。
任意外部源代码,包括 Python、Java 等。
确保您正在开发的应用程序版本通过 自动安全扫描。
使用 CREATE APPLICATION 命令,在本地创建应用程序对象,测试应用程序包的新版本。
在提交列表以进行审批之前,请先审查列表的所有部分。
确保列表、
readme
文件和 Streamlit 应用程序中没有拼写错误或其他文本错误。
针对试用列表的建议¶
在应用程序试用列表到期时,Snowflake 会自动暂停该应用程序,以避免使用者承担额外的计算成本。Snowflake 仅会暂停应用程序所拥有的、当前处于活动状态的对象。Snowflake 不会修改已暂停对象的状态。
在试用列表转换为完整列表或付费列表时,Snowflake 会尝试通过恢复任务、容器和计算池来重新启用应用程序。Snowflake 仅恢复将 auto_resume
属性设置为 false 的服务和计算池。
针对具有容器的应用程序的建议¶
计算池应与 Snowpark Container Services 作业一起设置为自动暂停,以避免计算节点处于空闲状态。
为了在升级期间获得更高的可用性并减少冷启动延迟,Snowflake 建议设置大于 1 的
MIN_NODES
参数。如果在同一个应用程序中需要跨不同服务的连接,请使用服务的 DNS 名称,而非配置外部访问集成。
针对事件共享的建议¶
提供商应该配置应用程序,使其发出符合 `支持的事件定义<https://other-docs.snowflake.com/en/native-apps/consumer-enable-logging#about-event-sharing>`_ 的日志消息和跟踪事件,以确保使用者了解收集哪些信息。
强制性事件定义应该仅限于应用程序所需的日志消息和跟踪事件。应避免过多或不必要的强制性事件定义。
在版本升级中添加新的强制性事件定义时,必须要求使用者重新启用应用程序的事件定义。
使用 Python Permission SDK 允许使用者共享可选事件。