为应用程序创建清单文件

本主题介绍如何为应用程序创建清单文件。

关于清单文件

清单文件包含应用程序包创建和管理 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.'
Copy

指定包含容器的应用程序使用的容器映像

若要指定包含容器的应用程序使用的容器映像的位置,请将 images 属性添加到 artifacts.container_services 块中。

必须为每个映像包含一个条目。指定路径包含数据库、架构和映像存储库的名称。该路径的形式如下:

/<database>/<schema>/<image_repository>/<image_name>:tag
Copy

下面的示例演示如何指定 images 属性:

artifacts
...
  container_services
    ...
    images
      - /dev_db/dev_schema/dev_repo/image1
      - /dev_db/dev_schema/dev_repo/image2
Copy

为包含容器的应用程序指定用户界面端点

若要使用容器为应用程序的用户界面指定端点,请将 default_web_endpoint 属性添加到 artifacts 块中。

default_web_endpoint 属性是可选的。如果指定了此属性,则还必须在服务规范文件中定义端点。

备注

只能指定 default_web_endpointdefault_streamlit 之一。

清单文件中的这个条目具有两个附加属性:

  • service

    指定用户界面的服务名称。

  • endpoint

    指定端点的名称。

下面的示例演示如何指定 default_web_endpoint 属性。

default_web_endpoint:
  service: ux_schema.ux_service
  endpoint: ui
Copy

示例清单文件

以下示例显示了不同类型用例的典型清单文件。

使用自动授予权限的示例清单文件

以下清单文件显示了如何配置应用程序以使用自动授予权限。此示例使用清单文件的版本 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"
Copy

安装应用程序时,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: "...”
Copy
语言: 中文