CREATE SERVICE

Crée un nouveau service Snowpark Container Services dans le schéma actuel. Si un service portant ce nom existe déjà, utilisez la commande DROP SERVICE pour supprimer le service précédemment créé.

Vous pouvez exécuter plus d’une instance de votre service. Chaque instance de service est une collection de conteneurs, tels que définis dans le fichier de spécification du service, qui s’exécutent ensemble sur un nœud de votre pool de calcul. Si vous exécutez plusieurs instances d’un service, un équilibreur de charge gère le trafic entrant.

Voir aussi :

ALTER SERVICE , DESCRIBE SERVICE, DROP SERVICE , SHOW SERVICES

Syntaxe

CREATE SERVICE [ IF NOT EXISTS ] <name>
  IN COMPUTE POOL <compute_pool_name>
  {
    FROM @<stage>
    SPECIFICATION_FILE = '<yaml_file_stage_path>'
    |
    FROM SPECIFICATION <specification_text>
  }
  [ EXTERNAL_ACCESS_INTEGRATIONS = ( <EAI_name> [ , ... ] ) ]
  [ AUTO_RESUME = { TRUE | FALSE } ]
  [ MIN_INSTANCES = <num> ]
  [ MAX_INSTANCES = <num> ]
  [ QUERY_WAREHOUSE = <warehouse_name> ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
  [ COMMENT = '{string_literal}']
Copy

Paramètres requis

name

Chaîne qui spécifie l’identificateur (c’est-à-dire le nom) du service ; elle doit être unique pour le schéma dans lequel le service est créé.

Les noms entre guillemets pour les caractères spéciaux ou les noms sensibles à la casse ne sont pas pris en charge. La même contrainte s’applique également aux noms des bases de données et des schémas dans lesquels vous créez un service. En d’autres termes, les noms de bases de données et de schémas sans guillemets sont valables lors de la création d’un service.

IN COMPUTE POOL compute_pool_name

Spécifie le nom du pool de calcul de votre compte sur lequel le service doit être exécuté.

FROM stage

Spécifie la zone de préparation interne de Snowflake où le fichier de spécification est stocké ; par exemple, @tutorial_stage.

SPECIFICATION_FILE = 'yaml_file_stage_path'

Spécifie le chemin d’accès au fichier de spécification du service sur la zone de préparation ; par exemple, 'some-dir/echo_spec.yaml'.

FROM SPECIFICATION specification_text

Spécifie la spécification du service. Vous pouvez utiliser une paire de signes du dollar ($$) pour délimiter le début et la fin de la chaîne de spécification.

Paramètres facultatifs

EXTERNAL_ACCESS_INTEGRATIONS = ( EAI_name [ , ... ] )

Identifie les destinations externes, sur Internet, auxquelles le service peut accéder. Par défaut, les conteneurs d’application n’ont pas la permission d’accéder à Internet. Vous devez activer l’accès à Internet à l’aide des intégrations d’accès externes (EAIs). Pour plus d’informations, voir Sortie réseau.

AUTO_RESUME = { TRUE | FALSE }

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

  • Si AUTO_RESUME est défini sur FALSE, vous devez reprendre explicitement le service (en utilisant ALTER SERVICE … RESUME).

  • Si AUTO_RESUME est défini sur TRUE, Snowflake reprend le service suspendu lorsqu’une fonction de service est appelée ou lorsqu’une requête est reçue (entrée).

MIN_INSTANCES = num

Spécifie le nombre minimum d’instances de service à exécuter.

Par défaut : 1

MAX_INSTANCES = num

Spécifie le nombre maximum d’instances de service à exécuter.

QUERY_WAREHOUSE = warehouse_name

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

La valeur par défaut est : aucun.

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

Spécifie le nom de la balise et la valeur de la chaîne de la balise.

La valeur de la balise est toujours une chaîne de caractères et le nombre maximum de caractères pour la valeur de la balise est 256.

Pour plus de détails sur la spécification des balises dans une instruction, voir Quotas de balises pour les objets et les colonnes.

COMMENT = 'string_literal'

Spécifie un commentaire pour le service.

Par défaut : aucune valeur

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :

Privilège

Objet

Remarques

CREATE SERVICE

Schéma

USAGE

Pool de calcul

READ

Zone de préparation

C’est à ce stade que la spécification est stockée.

READ

Référentiel d’images

Référentiel d’images référencées par la spécification.

BIND SERVICE ENDPOINT

Compte

Un rôle doit disposer de ce privilège pour créer un service avec des points de terminaison publics. Cela permet au service d’accéder aux points de terminaison publics. Si le rôle de propriétaire du service perd ce privilège, les points de terminaison publics ne seront pas accessibles.

Notez que l’exploitation d’un objet dans un schéma requiert également le privilège USAGE sur la base de données et le schéma parents.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

Exemples

Créez un service avec deux instances de service en cours d’exécution :

CREATE SERVICE echo_service
  IN COMPUTE POOL tutorial_compute_pool
  FROM @tutorial_stage
  SPECIFICATION_FILE='echo_spec.yaml'
  MIN_INSTANCES=2
  MAX_INSTANCES=2
Copy