为应用程序包创建清单文件¶
本主题介绍如何为应用程序包创建清单文件。
关于清单文件¶
清单文件包含应用程序包创建和管理 Snowflake Native App 所需的信息。这包括安装脚本的位置、版本定义以及应用程序的配置信息。
清单文件具有以下要求:
清单文件的名称必须为
manifest.yml
。清单文件必须上传到命名暂存区,以便应用程序包可访问它。
清单文件必须存在于命名暂存区上目录结构的根目录中,其他应用程序文件也存储在此位置。
清单文件引用¶
以下是 manifest.yml
文件可以包含的有效属性:
- manifest_version:
指定清单文件的版本。
必填
- version:
定义包含与版本相关的参数的块。有关版本和补丁的更多信息,请参阅 更新应用程序。
可选
- name:
指定版本的逻辑名称。此名称在用于管理版本的 SQL 命令中使用。
可选
- patch:
指定默认补丁编号。此编号在用于管理版本的 SQL 命令中使用。使用 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 应用程序的架构和名称。
可选
- 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
- metric_level:
指定要用于应用程序的指标级别。当提供商启用指标时,应用程序会自动向事件表发出自动检测的资源指标数据点。
有关
trace_level
属性支持的值,请参阅 为日志、指标和跟踪设置级别。可选
默认值:Off
- privileges:
定义一个块,其中包含安装 Snowflake Native App 时使用者必须授予的权限。
可选
默认值:空列表
- <privilege name>:
指定权限的名称。
- description:
提供所请求权限的描述。当使用 Python Permission SDK 在 Snowsight 中显示权限时,或者当运行 SHOW PRIVILEGES 命令时,将向使用者显示
description
中指定的文本。请提供尽可能多的信息,以说明为什么 Snowflake Native App 需要此权限,以及此权限是必需项还是可选项。
如果指定
privileges
,则为必需项。
- references:
定义一个包含提供商定义的引用的块。使用者必须将这些引用绑定到其账户中的对象。
可选
- - <reference name>:
指定引用的名称。
- label:
提供在安装 Snowflake Native App 时使用者可以查看的引用的描述。
如果指定
references
,则为必需项。- description:
提供所请求引用的描述。当使用 Python Permission SDK 在 Snowsight 中显示引用时,将向使用者显示
description
中指定的文本。您应该提供尽可能多的信息,说明为什么 Snowflake Native App 需要此引用,以及此权限是必需项还是可选项。
如果指定
privileges
,则为必需项。- privileges:
指定引用所需的权限。
如果指定
references
,则为必需项。- object_type:
指定与引用关联的对象的类型,例如,架构和表或 API 集成。
如果指定
references
,则为必需项。- multi_valued:
指定多个对象与引用关联。使用此属性将多个使用者对象绑定到同一引用。当指定此属性时,将对具有单个值引用的对象执行相同的操作。该属性还可以用于具有多值引用的对象。有关 Snowflake Native App Framework 引用操作的更多信息,请参阅 向使用者请求引用和对象级权限。
可选
默认值:False
- register_callback:
指定用于调用引用的回调函数的名称。
如果指定
references
,则为必需项。- configuration_callback:
指定回调函数的名称,该函数将为绑定到此引用的对象提供所需的配置。
如果
object_type
为EXTERNAL ACCESS INTEGRATION
或SECRET
,则此属性为必需。此属性不适用于其他类型的对象。- required_at_setup:
表示必须在安装应用程序时绑定引用。接受 TRUE 或 FALSE。默认为 FALSE。
如果指定
references
,则为必需项。
清单文件示例¶
以下示例演示一个典型的清单文件,该文件为所有支持的属性指定了值:
manifest_version: 1 # required
version:
name: hello_snowflake
patch: 3
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
metric_level: all
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"
- READ SESSION:
description: "To allow Streamlit to access some context functions"
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
- consumer_external_access:
label: "Consumer external access integration"
description: "An external access integration in the consumer account that exists outside the APPLICATION object."
privileges:
- USAGE
object_type: EXTERNAL ACCESS INTEGRATION
register_callback: config.register_reference
configuration_callback: config.get_configuration_for_reference
required_at_setup: true