Créer le fichier manifeste pour une application

Cette rubrique explique comment créer le fichier manifeste pour une application.

À propos du fichier manifeste

Le fichier manifeste contient les informations dont le paquet d’application a besoin pour créer et gérer une Snowflake Native App. Cela inclut l’emplacement du script d’installation, les définitions de version et les informations de configuration de l’application.

Le fichier manifeste doit remplir les conditions suivantes :

  • Le nom du fichier manifeste doit être manifest.yml.

  • Le fichier en zone de préparation doit être téléchargé dans une zone de préparation nommée afin qu’il soit accessible au paquet d’application.

  • Le fichier manifeste doit exister à la racine de la structure de répertoire sur la zone de préparation nommée là où d’autres fichiers d’applications sont stockés.

Version 1 et version 2 du fichier manifeste

Les Snowflake Native Apps prennent en charge deux versions du fichier manifeste. La version est spécifiée à l’aide du champ manifest_version.

manifest_version: 1

Cette version du fichier manifeste prend en charge les fonctionnalités actuelles et héritées des Snowflake Native Apps.

manifest_version: 2

Cette version du fichier manifeste prend en charge des fonctionnalités supplémentaires, y compris l’octroi automatique de privilèges.

Considérations de sécurité lors de l’utilisation de la version 2 du fichier manifeste

Lorsque vous utilisez la version 2 du fichier manifeste, tenez compte des implications de sécurité suivantes :

Lorsqu’un fournisseur configure une application pour utiliser manifest_version: 2 dans le fichier manifeste, l’octroi automatique de privilèges est activé. Par défaut, cela permet à Snowflake d’accorder automatiquement certains privilèges à l’application. Pour plus d’informations sur les privilèges qui peuvent être automatiquement accordés à l’application, consultez Privilèges accordés par l’octroi automatique de privilèges.

Lors de l’installation, Snowsight affiche une notification relative aux privilèges demandés par l’application. Lorsqu’un consommateur installe une application qui utilise l’octroi automatique de privilèges, il accepte que l’application puisse se voir accorder ces privilèges lors des mises à niveau, sans nécessiter de consentement supplémentaire.

Les consommateurs peuvent créer des politiques de fonctionnalités qui restreignent les objets qu’une application peut créer. Pour plus d’informations sur la création de politiques de fonctionnalités, consultez Utiliser des politiques de fonctions pour limiter les objets qu’une application peut créer.

Spécifier les privilèges requis par une application avec conteneurs

Comme pour les autres applications, le champ privileges du fichier manifeste spécifie les privilèges qu’une application avec des conteneurs demande aux consommateurs.

Les privilèges suivants sont spécifiques à une application avec des conteneurs :

  • CREATE COMPUTE POOL

    Ce privilège est nécessaire pour permettre à l’appli de créer un pool de calcul dans le compte du consommateur. Il n’est pas nécessaire que le consommateur crée le pool de calcul manuellement.

  • BIND SERVICE ENDPOINT

    Ce privilège est nécessaire pour permettre à un point de terminaison d’être accessible en dehors de Snowflake.

L’exemple suivant montre comment ajouter ces privilèges au bloc 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

Spécifier les images de conteneur utilisées par une application avec conteneurs

Pour spécifier l’emplacement des images de conteneur utilisées par l’application avec conteneurs, ajoutez la propriété images au bloc artifacts.container_services.

Vous devez inclure une entrée pour chaque image. Le chemin spécifié comprend le nom de la base de données, du schéma et du référentiel d’images. Ce chemin a la forme suivante :

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

L’exemple suivant montre comment spécifier la propriété images :

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

Spécifier le point de terminaison de l’interface utilisateur pour une application avec conteneurs

Pour spécifier le point de terminaison de l’interface utilisateur de l’application avec conteneurs, ajoutez la propriété default_web_endpoint au bloc artifacts.

La valeur default_web_endpoint est facultative. Si cette propriété est spécifiée, le point de terminaison doit également être défini dans le fichier de spécification du service.

Note

Un seul des deux default_web_endpoint et default_streamlit peut être spécifié.

Cette entrée du fichier manifeste possède deux propriétés supplémentaires :

  • service

    Spécifie le nom du service de l’interface utilisateur.

  • endpoint

    Spécifie le nom du point de terminaison.

L’exemple suivant montre comment spécifier la propriété default_web_endpoint.

default_web_endpoint:
  service: ux_schema.ux_service
  endpoint: ui
Copy

Exemples de fichiers manifestes

Les exemples suivants montrent des fichiers manifestes typiques pour différents types de cas d’utilisation.

Exemple de fichier manifeste pour l’utilisation de l’octroi automatique de privilèges

Le fichier manifeste suivant montre comment configurer une application pour utiliser l’octroi automatique de privilèges. Cet exemple utilise la version 2 du fichier manifeste. Le bloc privileges spécifie les privilèges dont l’application a besoin.

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

Lors de l’installation de l’application, Snowflake accorde automatiquement les privilèges CREATE TABLE et CREATE WAREHOUSE à l’application.

Exemple de fichier manifeste pour une application avec conteneurs

Les Snowflake Native Apps prennent en charge les entrées du fichier manifeste qui sont spécifiques à une application avec conteneurs. L’exemple suivant montre un fichier manifeste typique pour une application avec conteneurs :

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