CREATE GATEWAY

Crée une nouvelle passerelle dans le schéma actuel. Une passerelle permet de répartir le trafic entre plusieurs points de terminaison de service.

Voir aussi :

ALTER GATEWAY , DESCRIBE GATEWAY, DROP GATEWAY , SHOW GATEWAYS

Syntaxe

CREATE [ OR REPLACE ] GATEWAY [ IF NOT EXISTS ] <name>
  FROM SPECIFICATION <specification_text>
Copy

Paramètres requis

name

Chaîne qui indique l’identificateur de la passerelle ; elle doit être unique pour le schéma dans lequel la passerelle est créée.

FROM SPECIFICATION

Spécifie la spécification de la passerelle en ligne. La spécification définit la configuration de la répartition du trafic.

La spécification utilise le format suivant :

spec:
  type: traffic_split
  split_type: custom
  targets:
  - type: endpoint
    value: <db>.<schema>.<service>!<endpoint>
    weight: <weight>
  - type: endpoint
    value: <db>.<schema>.<service>!<endpoint>
    weight: <weight>
Copy

Paramètres de spécification

type

Valeur fixe. Doit être défini sur traffic_split.

split_type

Valeur fixe. Doit être défini sur custom.

targets

Une liste de points de terminaison cibles vers lesquels acheminer le trafic. Chaque cible doit spécifier :

type

Valeur fixe. Doit être défini sur endpoint.

value

Le nom pleinement qualifié du point de terminaison au format db.schema.service!endpoint. Chaque point de terminaison cible doit exister.

weight

Le poids du trafic pour ce point de terminaison, spécifié sous la forme d’un entier. Tous les poids doivent s’additionner jusqu’à 100.

Note

  • Le nombre maximum de points de terminaison par passerelle est de 5 par défaut.

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

Un rôle utilisé pour exécuter cette opération doit au minimum disposer des privilèges suivants :

Privilège

Objet

Remarques

CREATE GATEWAY

Schéma

Requis pour créer une passerelle dans le schéma.

BIND SERVICE ENDPOINT

Compte

Requis pour lier les points de terminaison de service à la passerelle.

USAGE

Base de données

Requis sur la base de données contenant la passerelle.

USAGE

Schéma

Requis sur le schéma contenant la passerelle.

USAGE

Points de terminaison de service

Requis sur les points de terminaison de service cibles. Accordez le rôle de service ALL_ENDPOINTS_USAGE pour fournir un accès.

Pour accorder les privilèges requis, utilisez les commandes suivantes :

-- Grant CREATE GATEWAY privilege in the schema
GRANT CREATE GATEWAY ON SCHEMA <schema_name> TO ROLE <role_name>;

-- Grant BIND SERVICE ENDPOINT privilege on the account
GRANT BIND SERVICE ENDPOINT ON ACCOUNT TO ROLE <role_name>;

-- Grant USAGE on target endpoints via service role
GRANT SERVICE ROLE <db_name>.<schema_name>.<service_name>!ALL_ENDPOINTS_USAGE TO ROLE <role_name>;
Copy

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éer une passerelle qui répartit le trafic entre deux points de terminaison de service :

CREATE GATEWAY split_gateway
  FROM SPECIFICATION $$
spec:
  type: traffic_split
  split_type: custom
  targets:
  - type: endpoint
    value: db.schema.s2!ep1
    weight: 60
  - type: endpoint
    value: db.schema.s1!ep1
    weight: 40
$$;
Copy

Créer ou remplacer une passerelle par une nouvelle configuration de répartition du trafic :

CREATE OR REPLACE GATEWAY split_gateway
  FROM SPECIFICATION $$
spec:
  type: traffic_split
  split_type: custom
  targets:
  - type: endpoint
    value: db.schema.service1!endpoint1
    weight: 70
  - type: endpoint
    value: db.schema.service2!endpoint1
    weight: 30
$$;
Copy