为应用程序包创建清单文件¶
本主题介绍如何为应用程序包创建清单文件。
关于清单文件¶
Snowflake Native App Framework 要求每个应用程序包都包含一个清单文件。此文件定义应用程序包所需的属性,包括安装脚本的位置和版本定义。
清单文件具有以下要求:
清单文件的名称必须为
manifest.yml
。清单文件必须上传到命名暂存区,以便在创建应用程序包或 Snowflake Native App 时可访问。
清单文件必须存在于命名暂存区上目录结构的根目录中。
清单文件引用¶
以下是 manifest.yml
文件可以包含的有效属性:
- manifest_version:
指定清单文件的版本。
必填
- version:
定义包含与版本相关的参数的块。
可选
- name:
指定版本的逻辑名称。此名称在用于管理版本的 SQL 命令中使用。
- label:
指定显示给使用者的版本的名称。
- comment:
指定版本的注释。此注释仅在提供商运行 SHOW VERSIONS 命令时可见。
- artifacts:
定义与从此版本的包分发的资源相关的块。
必填
- readme:
指定自述文件的路径,该文件以 markdown 格式提供 Snowflake Native App 的概述。对于 Streamlit 应用程序,如果未为
default_streamlit
属性指定值,则在查看已安装的 Snowflake Native App 时,将向使用者显示此文件的内容。此文件的位置是相对于
manifest.yml
文件的位置指定。必填
- setup_script:
指定在安装 SQL 时运行的 Snowflake Native App 脚本的路径和文件名。如果您不指定值,则默认值是与
manifest.yml
文件位于相同目录的setup.sql
。可选
- default_streamlit:
如果 Snowflake Native App 包含 Streamlit 应用程序,此属性指定使用者可用的默认 Streamlit 应用程序的架构和名称。
如果 Snowflake Native App 包含 Streamlit 应用程序,则为必填项。否则为可选项。
- configuration:
指定包含 Snowflake Native App 的配置属性的块。
可选
- log_level:
指定要用于已安装的 Snowflake Native App 的日志记录级别。有关此属性支持的值的信息,请参阅 设置日志级别。
可选
默认值:Off
- trace_level:
指定要用于已安装的 Snowflake Native App 的跟踪事件级别。在提供商启用跟踪时, Snowflake Native App 会自动获取所有查询和存储过程调用的开始时间和结束时间。
备注
如果将
trace_level
属性设置为OFF
以外的值,则发布 Snowflake Native App 可能会向使用者账户中可查看事件表的任何用户公开对隐藏存储过程的调用。有关
trace_level
属性的支持值,请参阅 设置跟踪级别。可选
默认值:Off
- privileges:
定义一个块,其中包含安装 Snowflake Native App 时使用者必须授予的权限。
可选
默认值:空列表
- <privilege name>:
指定权限的名称。
- description:
提供所请求权限的描述。当使用 Python Permission SDK 在 Snowsight 中显示权限时,将向使用者显示
description
中指定的文本。您应该提供尽可能多的信息,说明为什么 Snowflake Native App 需要此权限,以及此权限是必需项还是可选项。
如果指定
privileges
,则为必需项。
- references:
定义一个包含提供商定义的引用的块。使用者必须将这些引用绑定到其账户中的对象。
- - <reference name>:
指定引用的名称。
- label:
提供在安装 Snowflake Native App 时使用者可以查看的引用的描述。
如果指定
references
,则为必需项。- privileges:
指定引用所需的权限。
如果指定
references
,则为必需项。- object_type:
指定与引用关联的对象的类型,例如,架构和表或 API 集成。
如果指定
references
,则为必需项。- multi_valued:
指定多个对象与引用关联。
可选。
默认值:False
- register_callback:
指定用于调用引用的回调函数的名称。
如果指定
references
,则为必需项。
清单文件示例¶
以下示例演示一个典型的清单文件,该文件为所有支持的属性指定了值:
manifest_version: 1 # required
version:
name: hello_snowflake
label: "v1.0"
comment: "The first version of a Snowflake Native App"
artifacts:
readme: readme.md
setup_script: scripts/setup.sql
default_streamlit: streamlit/ux_schema.homepage_streamlit
configuration:
log_level: debug
trace_level: always
privileges:
- EXECUTE TASK:
description: "Run ingestion tasks for replicating Redshift data"
- EXECUTE MANAGED TASK:
description: "To run serverless ingestion tasks for replicating Redshift data"
- CREATE WAREHOUSE:
description: "To create warehouses for executing tasks"
- MANAGE WAREHOUSES:
description: "To manage warehouses for optimizing the efficiency of your accounts"
- CREATE DATABASE:
description: "To create sink databases for replicating Redshift data"
- IMPORTED PRIVILEGES ON SNOWFLAKE DB:
description: "To access account_usage views"
references:
- consumer_table:
label: "Consumer table"
description: "A table in the consumer account that exists outside the APPLICATION object."
privileges:
- SELECT
- INSERT
- UPDATE
object_type: Table
multi_valued: true
register_callback: config.register_reference