CREATE NOTIFICATION INTEGRATION (webhooks)¶
Crée une intégration de notification ou remplace une intégration existante pour un webhook.
- Voir aussi :
ALTER NOTIFICATION INTEGRATION (webhooks), DESCRIBE INTEGRATION, DROP INTEGRATION, SHOW INTEGRATIONS
Syntaxe¶
CREATE [ OR REPLACE ] NOTIFICATION INTEGRATION [ IF NOT EXISTS ] <name>
TYPE = WEBHOOK
ENABLED = { TRUE | FALSE }
WEBHOOK_URL = '<url>'
[ WEBHOOK_SECRET = <secret_name> ]
[ WEBHOOK_BODY_TEMPLATE = '<template_for_http_request_body>' ]
[ WEBHOOK_HEADERS = ( '<header_1>'='<value_1>' [ , '<header_N>'='<value_N>', ... ] ) ]
[ COMMENT = '<string_literal>' ]
Paramètres requis¶
name
Chaîne spécifiant l’identificateur (c’est-à-dire le nom) de l’intégration ; elle doit être unique sur votre compte.
De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (par exemple,
"My object"
). Les identificateurs entre guillemets doubles sont également sensibles à la casse.Pour plus d’informations, voir Exigences relatives à l’identificateur.
ENABLED = { TRUE | FALSE }
Spécifie s’il faut initier le fonctionnement de l’intégration ou le suspendre.
TRUE
permet l’intégration.FALSE
désactive l’intégration de la maintenance. Toute intégration entre Snowflake et un service tiers échoue.
TYPE = WEBHOOK
Spécifie qu’il s’agit d’une intégration de notification pour un webhook.
WEBHOOK_URL = 'url'
Spécifie l’URL pour le webhook. L’URL doit utiliser le protocole
https://
.Vous ne pouvez spécifier que les URLs suivantes.
URLs pour les webhooks Slack. Ces URLs doivent commencer par
https://hooks.slack.com/services/
.URLs pour les webhooks Teams. Ces URLs doivent utiliser le format général suivant :
https://<hostname>.webhook.office.com/webhookb2/<path_components>/IncomingWebhook/<path_components>
URLs pour les webhooks PagerDuty. Cette URL doit être
https://events.pagerduty.com/v2/enqueue
.
Si l’URL comprend un secret et vous créez un objet secret pour ce secret, remplacez ce secret dans l’URL par SNOWFLAKE_WEBHOOK_SECRET. Par exemple, si vous créez un objet secret pour le secret dans un webhook Slack URL, définissez WEBHOOK_URL sur :
WEBHOOK_URL='https://hooks.slack.com/services/SNOWFLAKE_WEBHOOK_SECRET'
Paramètres facultatifs¶
WEBHOOK_SECRET = secret_name
Spécifie le secret à utiliser avec cette intégration.
Si vous utilisez l’espace réservé SNOWFLAKE_WEBHOOK_SECRET dans WEBHOOK_URL, WEBHOOK_BODY_TEMPLATE ou WEBHOOK_HEADERS, l’espace réservé est remplacé par ce secret lorsque vous envoyez une notification.
Si la base de données et le schéma contenant l’objet secret ne sont pas actifs lorsque vous envoyez une notification, qualifiez le nom secret avec le nom du schéma ou les noms de la base de données et du schéma. Par exemple :
WEBHOOK_SECRET = my_secrets_db.my_secrets_schema.my_slack_webhook_secret
Vous devez avoir le privilège USAGE sur le secret (et la base de données et le schéma qui le contiennent) pour spécifier ce paramètre.
Par défaut : aucune valeur
WEBHOOK_BODY_TEMPLATE = 'template_for_http_request_body'
Spécifie un modèle pour le corps de la demande HTTP d’envoi de la notification.
Si le webhook nécessite un format spécifique pour le corps de la demande HTTP (par exemple, un format JSON spécifique), définissez-le sur une chaîne qui spécifie le format. Dans cette chaîne :
Si le message doit inclure un secret et que vous créez un objet secret pour ce secret, utilisez l’espace réservé SNOWFLAKE_WEBHOOK_SECRET où le secret doit apparaître dans le message.
Utilisez l’espace réservé SNOWFLAKE_WEBHOOK_MESSAGE où le message de notification doit être inclus.
Par exemple :
WEBHOOK_BODY_TEMPLATE='{ "routing_key": "SNOWFLAKE_WEBHOOK_SECRET", "event_action": "trigger", "payload": { "summary": "SNOWFLAKE_WEBHOOK_MESSAGE", "source": "Snowflake monitoring", "severity": "INFO", } }'
Si vous définissez WEBHOOK_BODY_TEMPLATE, vous devez également définir WEBHOOK_HEADERS pour inclure l’en-tête
Content-Type
avec le type de votre message. Par exemple, si vous définissez WEBHOOK_BODY_TEMPLATE sur un modèle en format JSON, définissez WEBHOOK_HEADERS pour inclure l’en-têteContent-Type: application/json
:WEBHOOK_HEADERS=('Content-Type'='application/json')
Par défaut : aucune valeur
WEBHOOK_HEADERS = ( 'header'='value' [ , 'header'='value', ... ] )
Spécifie une liste d’en-têtes HTTP et valeurs à inclure dans la demande HTTP pour le webhook.
Si un en-tête HTTP doit inclure un secret (par exemple, l’en-tête
Authorization
) et que vous créez un objet secret pour ce secret, utilisez l’espace réservé SNOWFLAKE_WEBHOOK_SECRET dans la valeur d’en-tête. Par exemple :WEBHOOK_HEADERS=('Authorization'='Basic SNOWFLAKE_WEBHOOK_SECRET')
Par défaut : aucune valeur
COMMENT = 'string_literal'
Chaîne (littéral) qui spécifie un commentaire pour l’intégration.
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 INTEGRATION |
Compte |
Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. |
USAGE |
Secret |
Si vous définissez la propriété WEBHOOK_SECRET sur un objet secret, vous devez avoir le privilège USAGE sur ce secret et sur la base de données et le schéma contenant ce secret. |
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.
Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.