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}']
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 [ , ... ] )
Spécifie les noms des intégrations d’accès externes qui permettent à votre service d’accéder à des sites externes. Les noms de cette liste sont sensibles à la casse. Par défaut, les conteneurs d’application n’ont pas la permission d’accéder à Internet. Si vous voulez permettre à votre service d’accéder à un site externe, créez une intégration d’accès externe (EAI), et configurez votre service pour qu’il utilise cette intégration. 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 d’informations 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