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 NOTIFICATION INTEGRATION , DROP INTEGRATION , SHOW NOTIFICATION 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 opération doit au minimum disposer des privilÚges suivants :
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 clauses
OR REPLACE
etIF NOT EXISTS
sâexcluent mutuellement. Elles ne peuvent pas ĂȘtre utilisĂ©es dans la mĂȘme instruction.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.
Exemples¶
Voir CrĂ©ation dâune intĂ©gration de notification webhook.