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>' ]
Copy

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>
    
    Copy
  • 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'
Copy

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
Copy

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",
    }
  }'
Copy

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ête Content-Type: application/json :

WEBHOOK_HEADERS=('Content-Type'='application/json')
Copy

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')
Copy

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.

Exemples

Voir Création d’une intégration de notification webhook.