为应用程序创建清单文件¶
本主题介绍如何为应用程序创建清单文件。
关于清单文件¶
清单文件包含应用程序包创建和管理 Snowflake Native App 所需的信息。这包括安装脚本的位置、版本定义以及应用程序的配置信息。
清单文件具有以下要求:
清单文件的名称必须为
manifest.yml
。清单文件必须上传到命名暂存区,以便应用程序包可访问它。
清单文件必须存在于命名暂存区上目录结构的根目录中,其他应用程序文件也存储在此位置。
清单文件的版本 1 和版本 2¶
Snowflake Native Apps 支持清单文件的两个版本。版本使用 manifest_version
字段指定。
manifest_version: 1
清单文件的这一版本支持 Snowflake Native Apps 的当前功能和旧版功能。
manifest_version: 2
清单文件的这一版本支持其他功能,包括自动授予权限。
使用清单文件版本 2 时的安全注意事项¶
使用清单文件的版本 2 时,请考虑以下安全影响:
当提供商将应用程序配置为在清单文件中使用 manifest_version: 2
,启用了自动授予权限。默认情况下,这允许 Snowflake 自动向应用程序授予某些权限。有关可以自动向应用程序授予的权限的信息,请参阅 通过自动授予权限授予的权限。
在安装过程中,Snowsight 显示有关应用程序请求的权限的通知。当使用者安装使用自动授予权限的应用程序时,即表示他们同意在升级期间可以向应用程序授予这些权限,而无需额外同意。
使用者可以创建功能策略,限制应用程序可以创建的对象。有关创建功能策略的更多信息,请参阅 使用功能策略限制应用程序可以创建的对象。
指定包含容器的应用程序所需的权限¶
与其他应用程序一样,清单文件的 privileges
字段会指定包含容器的应用程序向使用者请求的权限。
以下权限特定于具有容器的应用程序:
CREATE COMPUTE POOL
此权限是允许应用程序在使用者账户中创建计算池所必需的。如果使用者手动创建计算池,则不需要此权限。
BIND SERVICE ENDPOINT
必须具备此权限,才能允许在 Snowflake 外部访问一个端点。
下面的示例演示如何将这些权限添加到 privileges
块:
privileges:
- CREATE COMPUTE POOL:
description: 'Required to allow the app to create a compute pool in the consumer account.'
- BIND SERVICE ENDPOINT:
description: 'Required to allow endpoints to be externally accessible.'
指定包含容器的应用程序使用的容器映像¶
若要指定包含容器的应用程序使用的容器映像的位置,请将 images
属性添加到 artifacts.container_services
块中。
必须为每个映像包含一个条目。指定路径包含数据库、架构和映像存储库的名称。该路径的形式如下:
/<database>/<schema>/<image_repository>/<image_name>:tag
下面的示例演示如何指定 images
属性:
artifacts
...
container_services
...
images
- /dev_db/dev_schema/dev_repo/image1
- /dev_db/dev_schema/dev_repo/image2
为包含容器的应用程序指定用户界面端点¶
若要使用容器为应用程序的用户界面指定端点,请将 default_web_endpoint
属性添加到 artifacts
块中。
default_web_endpoint
属性是可选的。如果指定了此属性,则还必须在服务规范文件中定义端点。
备注
只能指定 default_web_endpoint
和 default_streamlit
之一。
清单文件中的这个条目具有两个附加属性:
service
指定用户界面的服务名称。
endpoint
指定端点的名称。
下面的示例演示如何指定 default_web_endpoint
属性。
default_web_endpoint:
service: ux_schema.ux_service
endpoint: ui
示例清单文件¶
以下示例显示了不同类型用例的典型清单文件。
使用自动授予权限的示例清单文件¶
以下清单文件显示了如何配置应用程序以使用自动授予权限。此示例使用清单文件的版本 2。privileges
块指定应用程序所需的权限。
manifest_version: 2
version:
name: v1
artifacts:
readme: readme.md
setup_script: setup.sql
privileges:
- CREATE TABLE:
description: "Allows the app to create tables in the consumer account"
- CREATE WAREHOUSE:
description: "Allows the app to create warehouses in the consumer account"
安装应用程序时,Snowflake 会自动授予应用程序 CREATETABLE 和 CREATEWAREHOUSE 权限。
包含容器的应用程序的清单文件示例¶
Snowflake Native Apps 支持清单文件中特定于包含容器的应用程序的条目。以下示例清单文件展示了包含容器的应用程序的典型清单文件:
manifest_version: 2
version:
name: v1
artifacts:
readme: readme.md
setup_script: setup.sql
container_services:
images:
- /dev_db/dev_schema/dev_repo/image1
- /dev_db/dev_schema/dev_repo/image2
default_web_endpoint:
service: ux_schema.ux_service
endpoint: ui
privileges:
- CREATE COMPUTE POOL:
description: "..."
- BIND SERVICE ENDPOINT:
description: "...”