Gestion des services

Snowpark Container Services vous permet de déployer, de gérer et d’adapter facilement des applications conteneurisées. Après avoir chargé votre image d’application dans un référentiel de votre compte, vous pouvez exécuter vos conteneurs d’application en tant que service ou tâche. Cette rubrique explique comment utiliser des services.

Un service est de longue durée, comme un service Web, et ne se termine pas de lui-même. Snowflake gère les services en cours d’exécution. Par exemple, si un conteneur de service s’arrête, pour quelque raison que ce soit, Snowflake redémarre ce conteneur afin que le service fonctionne sans interruption. Si votre service a besoin de plus de ressources, par exemple plus de puissance de calcul, Snowflake fournit des nœuds supplémentaires dans le pool de calcul.

Pour plus d’informations sur l’utilisation des services de conteneurs, consultez Snowpark Container Services : utilisation des tâches.

Cette rubrique explique comment effectuer les tâches suivantes avec les services :

Pour les opérations courantes, telles que l’affichage sous forme de liste ou la suppression, Snowflake CLI utilise les commandes snow object décrites dans Gestion des objets Snowflake.

Créer un service Snowpark Container Services

Un service de conteneurs Snowpark nécessite les éléments suivants :

  • Un pool de calcul : Snowflake exécute votre service dans le pool de calcul spécifié.

  • Un fichier de spécification de service : cette spécification donne à Snowflake les informations nécessaires pour configurer et exécuter votre service.

Pour créer un service, entrez une commande snow spcs service create similaire à la suivante :

snow spcs service create "job_1" --compute-pool "pool_1" --spec-path "/some-dir/spec_file.yaml"
Copy

Pour plus d’informations, voir Gestion des objets Snowflake.

Créer et déployer un service à partir d’une définition de projet

Vous pouvez créer un service à partir d’un fichier de définition de projet snowflake.yml, puis en exécutant la commande snow spcs service deploy.

Vous trouverez ci-dessous un exemple de fichier de définition de projet snowflake.yml :

definition_version: 2
entities:
  my_service:
    type: service
    identifier: my_service
    stage: my_stage
    compute_pool: my_compute_pool
    spec_file: spec.yml
    min_instances: 1
    max_instances: 2
    query_warehouse: my_warehouse
    auto_resume: true
    external_access_integrations:
      - my_external_access
    secrets:
        cred: my_cred_name
    artifacts:
      - spec.yml
    comment: "My service"
    tags:
      - name: test_tag
        value: test_value
Copy

La table suivante décrit les propriétés d’une définition de projet de pool de calcul.

Propriétés de définition du projet Streamlit

Propriété

Définition

type

required, string

Doit être service.

stage

required, string

Zone de préparation où se trouve le fichier de spécification de service.

compute_pool

required, string

Pool de calcul où le service s’exécute.

spec_file

required, string

Chemin d’accès au fichier de spécification de service sur la zone de préparation.

identifier

optional, string

Identificateur Snowflake de l’entité. La valeur peut avoir les formes suivantes :

  • Texte d’identificateur de chaîne

    identifier: my-service
    
    Copy

    Les identificateurs entre guillemets et sans guillemets sont pris en charge. Pour utiliser des identificateurs entre guillemets, incluez les guillemets dans la valeur YAML (par exemple, "Mon référentiel d'images").

  • Objet

    identifier:
      name: my-service
      schema: my-schema # optional
      database: my-db # optional
    
    Copy

    Note

    Une erreur se produit si vous spécifiez un schéma :codenowrap: `` ou une base de données :codenowrap:`` et que vous utilisez un nom entièrement qualifié dans la propriété name (tel que mydb.schema1.my-app).

min_instances

optional, string

Nombre minimum d’instances de service à exécuter.

Par défaut : 1

max_instances

optional, string

Nombre maximum d’instances de service à exécuter.

query_warehouse

optional, string

Entrepôt à utiliser si un conteneur de service se connecte à Snowflake pour exécuter une requête, sans spécifier explicitement un entrepôt à utiliser.

auto_resume

optional, string

Détermine s’il faut reprendre automatiquement lorsqu’une fonction de service ou une entrée est appelée.

Par défaut : True

external_access_integrations

optional, string sequence

Noms des intégrations d’accès externe nécessaires pour que cette entité puisse accéder aux réseaux externes.

secrets

optional, dictionary

Noms et valeurs des variables des secrets afin que vous puissiez utiliser les variables pour faire référence aux secrets.

artifacts

optional, string sequence

Liste des paires de fichiers source et destination à ajouter à la racine du déploiement. Vous pouvez utiliser les propriétés d’artefacts suivantes :

  • src : chemin vers le ou les fichiers sources du code

  • dest : chemin vers le répertoire dans lequel déployer les artefacts.

    Les chemins de destination qui font référence à des répertoires doivent se terminer par un /. La destination d’un modèle de glob qui ne se termine pas par / entraîne une erreur. S’il est omis, dest prend par défaut la même chaîne que src.

    Vous pouvez également transmettre une chaîne pour chaque élément au lieu d’un dict, auquel cas la valeur est traitée à la fois comme src et dest.

Si src fait référence à un seul fichier (pas un glob), dest peut faire référence à un <chemin> ou <chemin/nom> cible.

Vous pouvez également transmettre une chaîne pour chaque élément au lieu d’un dict, auquel cas la valeur est traitée à la fois comme src et dest.

commentaire

optional, string

Commentaires à associer au pool de calcul

tags

optional, Tag sequence

Noms et valeurs des balises pour le pool de calcul. Pour plus d’informations, voir Quota de balise pour les objets

Pour créer et déployer un service, procédez comme suit :

  1. Définissez votre répertoire actuel pour le répertoire contenant le fichier de définition du projet.

  2. Exécutez une commande snow spcs service deploy similaire à la suivante :

    snow spcs service deploy
    
    Copy
    +---------------------------------------------------------------------+
    | key    | value                                                      |
    |--------+------------------------------------------------------------|
    | status | Service MY_SERVICE successfully created.                   |
    +---------------------------------------------------------------------+
    

Suspendre et reprendre un service

Pour suspendre un service nommé, entrez une commande snow spcs service suspend similaire à la suivante :

snow spcs service suspend echo_service
Copy
+-------------------------------------------+
| key    | value                            |
|--------+----------------------------------|
| status | Statement executed successfully. |
+-------------------------------------------+

Pour reprendre un service suspendu, entrez une commande snow spcs service resume similaire à la suivante :

snow spcs service resume echo_service
Copy
+-------------------------------------------+
| key    | value                            |
|--------+----------------------------------|
| status | Statement executed successfully. |
+-------------------------------------------+

Obtenir des informations sur le statut d’un service

Note

Le rôle actuel doit avoir le privilège MONITOR sur le service pour obtenir son statut.

Lister des services

La commande snow spcs service list permet d’obtenir un aperçu de tous les services, y compris leur environnement d’exécution, tel que PENDING ou RUNNING et leur statut de mise à niveau. Pour obtenir le statut d’un service nommé, entrez une commande similaire à la suivante :

snow spcs service list
Copy
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|        |        |        |        |        |        |        |        |        |        |        |         | extern |         |        |         |        |         |        |        |         |        |         |        |
|        |        |        |        |        |        |        |        |        |        |        |         | al_acc |         |        |         |        |         |        |        |         |        | managin | managi |
|        |        | databa |        |        |        |        | curren | target | min_in | max_in |         | ess_in |         |        |         |        | owner_r | query_ |        |         |        | g_objec | ng_obj |
|        |        | se_nam | schema |        | comput | dns_na | t_inst | _insta | stance | stance | auto_re | tegrat | created | update | resumed | commen | ole_typ | wareho |        | spec_di | is_upg | t_domai | ect_na |
| name   | status | e      | _name  | owner  | e_pool | me     | ances  | nces   | s      | s      | sume    | ions   | _on     | d_on   | _on     | t      | e       | use    | is_job | gest    | rading | n       | me     |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+--------+---------+--------+---------+--------+---------+--------+--------+---------+--------+---------+--------|
| ECHO_S | RUNNIN | TEST00 | TEST_S | SYSADM | TUTORI | echo-s | 1      | 1      | 1      | 1      | true    | None   | 2024-10 | 2024-1 | None    | This   | ROLE    | COMPUT | false  | 52e62d1 | false  | None    | None   |
| ERVICE | G      | _DB    | CHEMA  | IN     | AL_COM | ervice |        |        |        |        |         |        | -16     | 0-16   |         | is a   |         | E_WH   |        | f19c720 |        |         |        |
|        |        |        |        |        | PUTE_P | .imhd. |        |        |        |        |         |        | 15:09:3 | 15:09: |         | test   |         |        |        | 6b5f4ef |        |         |        |
|        |        |        |        |        | OOL    | svc.sp |        |        |        |        |         |        | 0.49300 | 31.905 |         | servic |         |        |        | c069557 |        |         |        |
|        |        |        |        |        |        | cs.int |        |        |        |        |         |        | 0-07:00 | 000-07 |         | e      |         |        |        | 8b6c2b3 |        |         |        |
|        |        |        |        |        |        | ernal  |        |        |        |        |         |        |         | :00    |         |        |         |        |        | 806ad76 |        |         |        |
|        |        |        |        |        |        |        |        |        |        |        |         |        |         |        |         |        |         |        |        | 67d78cc |        |         |        |
|        |        |        |        |        |        |        |        |        |        |        |         |        |         |        |         |        |         |        |        | ce8b6ed |        |         |        |
|        |        |        |        |        |        |        |        |        |        |        |         |        |         |        |         |        |         |        |        | 6501a8a |        |         |        |
|        |        |        |        |        |        |        |        |        |        |        |         |        |         |        |         |        |         |        |        | 3       |        |         |        |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Obtenir le statut d’un service nommé

Pour obtenir le statut d’un service individuel, entrez une commande snow spcs service describe similaire à la suivante :

snow spcs service describe echo_service
Copy
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|        |        |        |        |        |        |        |        |        |        |        |         | extern |         |        |         |        |         |        |        |         |        |         |        |
|        |        |        |        |        |        |        |        |        |        |        |         | al_acc |         |        |         |        |         |        |        |         |        | managin | managi |
|        |        | databa |        |        |        |        | curren | target | min_in | max_in |         | ess_in |         |        |         |        | owner_r | query_ |        |         |        | g_objec | ng_obj |
|        |        | se_nam | schema |        | comput | dns_na | t_inst | _insta | stance | stance | auto_re | tegrat | created | update | resumed | commen | ole_typ | wareho |        | spec_di | is_upg | t_domai | ect_na |
| name   | status | e      | _name  | owner  | e_pool | me     | ances  | nces   | s      | s      | sume    | ions   | _on     | d_on   | _on     | t      | e       | use    | is_job | gest    | rading | n       | me     |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+--------+---------+--------+---------+--------+---------+--------+--------+---------+--------+---------+--------|
| ECHO_S | RUNNIN | TEST00 | TEST_S | SYSADM | TUTORI | echo-s | 1      | 1      | 1      | 1      | true    | None   | 2024-10 | 2024-1 | None    | This   | ROLE    | COMPUT | false  | 52e62d1 | false  | None    | None   |
| ERVICE | G      | _DB    | CHEMA  | IN     | AL_COM | ervice |        |        |        |        |         |        | -16     | 0-16   |         | is a   |         | E_WH   |        | f19c720 |        |         |        |
|        |        |        |        |        | PUTE_P | .imhd. |        |        |        |        |         |        | 15:09:3 | 15:09: |         | test   |         |        |        | 6b5f4ef |        |         |        |
|        |        |        |        |        | OOL    | svc.sp |        |        |        |        |         |        | 0.49300 | 31.905 |         | servic |         |        |        | c069557 |        |         |        |
|        |        |        |        |        |        | cs.int |        |        |        |        |         |        | 0-07:00 | 000-07 |         | e      |         |        |        | 8b6c2b3 |        |         |        |
|        |        |        |        |        |        | ernal  |        |        |        |        |         |        |         | :00    |         |        |         |        |        | 806ad76 |        |         |        |
|        |        |        |        |        |        |        |        |        |        |        |         |        |         |        |         |        |         |        |        | 67d78cc |        |         |        |
|        |        |        |        |        |        |        |        |        |        |        |         |        |         |        |         |        |         |        |        | ce8b6ed |        |         |        |
|        |        |        |        |        |        |        |        |        |        |        |         |        |         |        |         |        |         |        |        | 6501a8a |        |         |        |
|        |        |        |        |        |        |        |        |        |        |        |         |        |         |        |         |        |         |        |        | 3       |        |         |        |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Lister les instances et les conteneurs

Vous pouvez lister les instances et les conteneurs du service avec les commandes codenowrap:snow spcs service list-instances et snow spcs service list-containers, respectivement.

Pour obtenir la liste des instances du service echo_service, entrez la commande suivante snow spcs service list-instances :

snow spcs service list-instances echo_service
Copy
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| database_name | schema_name | service_name | instance_id | status | spec_digest                                                      | creation_time        | start_time           |
|---------------+-------------+--------------+-------------+--------+------------------------------------------------------------------+----------------------+----------------------|
| TEST00_DB     | TEST_SCHEMA | ECHO_SERVICE | 0           | READY  | 336c065739dd2b96e770f01804affdc7810e6df68a23b23052d851627abfbdf9 | 2024-10-10T06:06:30Z | 2024-10-10T06:06:30Z |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Pour obtenir la liste des conteneurs du service echo_service, entrez la commande suivante snow spcs service list-containers :

snow spcs service list-containers echo_service
Copy
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| database_name | schema_name | service_name | instance_id | container_name | status | message | image_name                                | image_digest                              | restart_count | start_time           |
|---------------+-------------+--------------+-------------+----------------+--------+---------+-------------------------------------------+-------------------------------------------+---------------+----------------------|
| TEST00_DB     | TEST_SCHEMA | ECHO_SERVICE | 0           | main           | READY  | Running | org-test-account-00.registry.registry.sno | sha256:06c3d54edc24925abe398eda70d37eb6b8 | 0             | 2024-10-16T22:09:35Z |
|               |             |              |             |                |        |         | wflakecomputing.com/test00_db/test_schema | 7b1c4dd6211317592764e1e7d94498            |               |                      |
|               |             |              |             |                |        |         | /test00_repo/echo_service:latest          |                                           |               |                      |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Répertorier les points de terminaison d’un service

Pour dresser la liste des terminaisons d’un service nommé, entrez une commande snow spcs service list-endpoints similaire à la suivante :

snow spcs service list-endpoints echo_service
Copy
+--------------+------+----------+-----------------+-----------------------------------------+
| name         | port | protocol | ingress_enabled | ingress_url                             |
|--------------+------+----------+-----------------+-----------------------------------------|
| echoendpoint | 8000 | TCP      | true            | org-id-acct-id.snowflakecomputing.app   |
+--------------+------+----------+-----------------+-----------------------------------------+

Répertorier tous les rôles de service associés à un service

Vous pouvez gérer l’accès aux points de terminaison individuels exposés par un service en définissant les rôles et les autorisations de service dans la spécification de service. Pour plus d’informations sur l’utilisation des rôles de service, consultez GRANT SERVICE ROLE.

Pour obtenir la liste des rôles de service créés pour un service, utilisez la commande snow spcs service list-roles, comme indiqué :

snow spcs service list-roles my_service
Copy
+------------------------------------------------------------------+
| created_on                       | name                | comment |
|----------------------------------+---------------------+---------|
| 2024-10-09 16:48:52.980000-07:00 | ALL_ENDPOINTS_USAGE | None    |
+------------------------------------------------------------------+

Définir et annuler les propriétés ou les paramètres d’un service

Note

Le rôle actuel doit avoir le privilège OPERATE sur le service pour définir les propriétés.

Pour définir une propriété ou un paramètre de service, entrez une commande snow spcs service set similaire à la suivante :

snow spcs service set echo_service --min-instances 2 --max-instances 4
Copy
+-------------------------------------------+
| key    | value                            |
|--------+----------------------------------|
| status | Statement executed successfully. |
+-------------------------------------------+

Pour rétablir la valeur par défaut d’une propriété ou d’un paramètre de service, entrez une commande similaire à la suivante :

snow spcs compute-pool unset tutorial_compute_pool --auto-resume
Copy
+-------------------------------------------+
| key    | value                            |
|--------+----------------------------------|
| status | Statement executed successfully. |
+-------------------------------------------+

Afficher les journaux d’un service nommé

Note

Le rôle actuel doit avoir le privilège MONITOR sur le service pour afficher les journaux.

Pour afficher les connexions locales d’un service nommé, entrez une commande snow spcs service logs similaire à la suivante :

snow spcs service logs "service_1" --container-name "container_1" --instance-id "0"
Copy

Mettre à niveau un service nommé

Note

Le rôle actuel doit avoir le privilège OPERATE sur le service pour le mettre à niveau.

Pour mettre à niveau un service nommé, entrez une commande snow spcs service upgrade similaire à la suivante :

snow spcs service upgrade echo_service --spec-path spec.yml
Copy
+-------------------------------------------+
| key    | value                            |
|--------+----------------------------------|
| status | Statement executed successfully. |
+-------------------------------------------+