Utilisation de SYSTEM$SEND_SNOWFLAKE_NOTIFICATION pour envoyer des notifications¶
Note
Tous les clients de Snowflake peuvent envoyer des e-mails à l’aide de cette fonction. Les e-mails envoyés à partir de la procédure stockée du système de notification sont traités par les déploiements d’Amazon Web Services (AWS) de Snowflake, à l’aide d’AWS Simple Email Service (SES). Le contenu d’un e-mail envoyé à l’aide d’AWS peut être conservé par Snowflake pendant un maximum de trente jours afin de gérer la livraison du message. Après cette période, le contenu du message est supprimé.
Si vous devez envoyer des notifications à une adresse e-mail un webhook ou à une file d’attente fournie par un service cloud (Amazon SNS, Google Cloud PubSub ou Azure Event Grid), utilisez la procédure stockée SYSTEM$SEND_SNOWFLAKE_NOTIFICATION.
Avec un seul appel à cette procédure stockée, vous pouvez :
Envoyer un message à plusieurs types de destinations (adresses e-mail, webhooks et files d’attente).
Envoyer un message à plusieurs adresses e-mail, webhooks et files d’attente.
Envoyez un message dans un format spécifié, en fonction du type d’intégration de la notification (texte brut ou HTML pour l’e-mail, JSON pour les files d’attente).
Par exemple, en un seul appel, vous pouvez envoyer des messages aux formats texte brut, HTML et JSON à plusieurs adresses e-mail et à plusieurs sujets SNS, PubSub et Event Grid.
Vous pouvez utiliser plusieurs intégrations de notification pour envoyer la notification à différentes files d’attente. Vous pouvez également créer plusieurs intégrations de notification par e-mail qui ont différents ensembles d’adresses e-mail et de lignes d’objet, ce qui facilite la configuration des e-mails pour différents destinataires.
Envoyer une notification¶
Avant d’envoyer une notification, vous devez disposer d’une intégration de notification que vous utiliserez pour envoyer la notification. Si vous envoyez une notification par e-mail, vous devez également valider les adresses e-mail des destinataires. Pour plus de détails, voir Notifications dans Snowflake.
Pour envoyer une notification à des adresses e-mail ou à des files d’attente, appelez la procédure stockée SYSTEM$SEND_SNOWFLAKE_NOTIFICATION en spécifiant les messages et les intégrations de notification à utiliser.
Voici un exemple d’appel à cette procédure stockée :
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
-- Message type and content.
'{ "text/html": "<p>This is a message.</p>" }',
-- Integration used to send the notification and values used for the subject and recipients.
-- These values override the defaults specified in the integration.
'{
"my_email_int": {
"subject": "Status update",
"toAddress": ["person_a@example.com", "person_b@example.com"],
"ccAddress": ["person_c@example.com"],
"bccAddress": ["person_d@example.com"]
}
}'
);
Comme le montre l’exemple ci-dessus, vous transmettez des chaînes formatées JSON comme arguments pour spécifier le message à envoyer et l’intégration de notification à utiliser.
Pour la syntaxe de ces chaînes, voir SYSTEM$SEND_SNOWFLAKE_NOTIFICATION.
Pour construire ces chaînes formatées JSON, vous pouvez appeler des fonctions d’aide telles que TEXT_HTML pour spécifier le message et EMAIL_INTEGRATION_CONFIG pour spécifier l’intégration de la notification, la ligne d’objet et les adresses e-mail. Par exemple :
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
SNOWFLAKE.NOTIFICATION.TEXT_HTML('<p>a message</p>'),
SNOWFLAKE.NOTIFICATION.EMAIL_INTEGRATION_CONFIG(
'my_email_int',
'Status update',
ARRAY_CONSTRUCT('person_a@example.com', 'person_b@example.com'),
ARRAY_CONSTRUCT('person_c@example.com'),
ARRAY_CONSTRUCT('person_d@example.com')
)
);
Pour la liste des fonctions d’aide que vous pouvez utiliser, voir SYSTEM$SEND_SNOWFLAKE_NOTIFICATION.
Remplacer des valeurs par défaut dans l’intégration de la notification par e-mail¶
Pour utiliser un ensemble de destinataires ou un objet différent de la valeur spécifiée par défaut dans l’intégration de la notification par e-mail, définissez les propriétés suivantes de l’objet de configuration de l’intégration que vous transmettez à SYSTEM$SEND_SNOWFLAKE_NOTIFICATION :
subject
(la longueur ne doit pas dépasser 256 caractères)toAddress
ccAddress
bccAddress
Par exemple, pour utiliser l’intégration de la notification par e-mail my_email_int
et remplacer la ligne d’objet, la ligne « À : », la ligne « Cc : » et la ligne « Cci : » :
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
'{ "text/html": "<p>This is a message.</p>" }',
'{
"my_email_int": {
"subject": "Status update",
"toAddress": ["person_a@example.com", "person_b@example.com"],
"ccAddress": ["person_c@example.com"],
"bccAddress": ["person_d@example.com"]
}
}'
);
Pour construire la chaîne formatée JSON pour la configuration de l’intégration, vous pouvez appeler la fonction d’aide EMAIL_INTEGRATION_CONFIG.
Par exemple, pour envoyer un message e-mail à oncall-a@snowflake.com et oncall-b@snowflake.com avec pour objet « Service down », exécutez l’instruction suivante :
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
SNOWFLAKE.NOTIFICATION.TEXT_PLAIN('Your message'),
SNOWFLAKE.NOTIFICATION.EMAIL_INTEGRATION_CONFIG(
'my_email_int,
'Service down',
ARRAY_CONSTRUCT('oncall-a@example.com', 'oncall-b@example.com')
)
);
Pour inclure les lignes « Cc : » et « Bcc : » dans l’e-mail, transmettez des arguments supplémentaires contenant des tables d’adresses e-mail pour ces lignes :
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
SNOWFLAKE.NOTIFICATION.TEXT_PLAIN('Your message'),
SNOWFLAKE.NOTIFICATION.EMAIL_INTEGRATION_CONFIG(
'my_email_int,
'Service down',
ARRAY_CONSTRUCT('oncall-a@example.com', 'oncall-b@example.com'),
ARRAY_CONSTRUCT('cc-a@example.com', 'cc-b@example.com'),
ARRAY_CONSTRUCT('bcc-a@example.com', 'bcc-b@example.com')
)
);
Si vous souhaitez uniquement définir la ligne « Cc : » ou « Bcc : » (et non les deux), transmettez une table vide ou NULL pour les arguments correspondants. Si vous construisez l’objet JSON sans utiliser la fonction d’aide, omettez la propriété ccAddress
ou bccAddress
de l’objet JSON.
Envoyer des messages en HTML, texte simple et JSON¶
Pour envoyer un message en HTML, texte brut, ou JSON, transmettez un objet JSON qui contient le type de message comme nom de la propriété et le message comme valeur de la propriété :
'{ "<message_type>": "<message>" }'
"message_type"
peut prendre l’une des valeurs suivantes :
"text/html"
"text/plain"
"application/json"
Par exemple :
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
'{ "text/html": "<p>This is a message.</p>" }',
'{ "my_email_int": {} }'
);
Pour construire l’objet JSON pour le message, vous pouvez utiliser les fonctions d’aide suivantes :
Pour un message en HTML, appelez TEXT_HTML.
Pour un message en texte clair, appelez TEXT_HTML.
Pour un message en JSON, appelez APPLICATION_JSON.
L’exemple suivant envoie un message HTML, en utilisant l’intégration de notification par e-mail my_email_int
:
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
SNOWFLAKE.NOTIFICATION.TEXT_HTML('<p>a message</p>'),
SNOWFLAKE.NOTIFICATION.INTEGRATION('my_email_int')
);
L’exemple suivant envoie un message en texte clair, en utilisant la même intégration :
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
SNOWFLAKE.NOTIFICATION.TEXT_PLAIN('A message'),
SNOWFLAKE.NOTIFICATION.INTEGRATION('my_email_int')
);
L’exemple suivant envoie un message en JSON à la file d’attente spécifiée par l’intégration de notification my_queue_int
. Pour savoir comment créer une intégration de notification pour une file d’attente, reportez-vous aux rubriques suivantes :
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{ "name": "value" }'),
SNOWFLAKE.NOTIFICATION.INTEGRATION('my_sns_int')
);
Envoyer une notification à l’aide de plusieurs intégrations¶
Vous pouvez utiliser plusieurs intégrations pour envoyer des messages lorsque :
Vous souhaitez envoyer un message par e-mail et à un sujet dans le même appel de fonction.
Vous souhaitez envoyer un message à différentes adresses e-mail spécifiées par différentes intégrations de notification par e-mail.
Pour utiliser plusieurs intégrations, appelez la fonction ARRAY_CONSTRUCT pour construire un tableau de configurations d’intégration et transmettez le tableau comme deuxième argument de la procédure stockée SYSTEM$SEND_SNOWFLAKE_NOTIFICATION.
Par exemple, pour envoyer un message en texte clair à une file d’attente et à des adresses e-mail configurées dans différentes intégrations de notification :
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
'{"text/plain":"A message"}',
ARRAY_CONSTRUCT(
'{"my_sns_int":{}}',
'{"my_email_int":{}}',
)
);
Note
Le tableau ne peut pas contenir plus d’un objet pour la même intégration de la notification.
Si vous préférez utiliser les fonctions d’aide pour construire les configurations d’intégration, vous pouvez transmettre les valeurs renvoyées par les fonctions d’aide à la fonction ARRAY_CONSTRUCT. Par exemple :
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
SNOWFLAKE.NOTIFICATION.TEXT_PLAIN('A message'),
ARRAY_CONSTRUCT(
SNOWFLAKE.NOTIFICATION.INTEGRATION('my_sns_int'),
SNOWFLAKE.NOTIFICATION.INTEGRATION('my_email_int')
)
);
L’exemple suivant envoie des messages dans différents formats à une file d’attente et à des adresses e-mail :
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
ARRAY_CONSTRUCT(
SNOWFLAKE.NOTIFICATION.TEXT_PLAIN('A message'),
SNOWFLAKE.NOTIFICATION.TEXT_HTML('<p>A message</p>'),
SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{ "name": "value" }')
),
ARRAY_CONSTRUCT(
SNOWFLAKE.NOTIFICATION.INTEGRATION('my_sns_int'),
SNOWFLAKE.NOTIFICATION.INTEGRATION('my_email_int')
)
);