Versenden von Webhook-Benachrichtigungen¶
Sie können Snowflake-Benachrichtigungen in die folgenden externen Systeme integrieren, indem Sie die von diesen Systemen bereitgestellten Webhooks verwenden:
Bemerkung
Snowflake sendet keine Webhook-Benachrichtigungen an andere als die oben aufgeführten externen Systeme.
Um eine Benachrichtigung an eines dieser Systeme zu senden:
Erstellen Sie das Geheimnis für den Webhook-URL für das externe System.
Erstellen Sie die Integration der Webhook-Benachrichtigung für das externe System.
In den nächsten Abschnitten erfahren Sie mehr darüber, wie Sie Benachrichtigungen für diese externen Systeme einstellen und versenden.
Erstellen eines Geheimnisses für einen Webhook-URL¶
Die meisten Webhooks erfordern ein Geheimnis oder einen Integrationsschlüssel in der eingehenden HTTP-Anfrage. Beispiel:
Wenn Sie einen eingehenden Webhook in Slack erstellen, enthält die URL für den Webhook ein Geheimnis:
https://hooks.slack.com/services/<secret>
Wenn Sie einen eingehenden Webhook in Teams erstellen, enthält die URL für den Webhook ein Geheimnis:
https://<hostname>.webhook.office.com/webhookb2/<secret>
Wenn Sie eine Integration für Ihren PagerDuty-Dienst einrichten, stellt die Integration einen Integrationsschlüssel zur Verfügung, den Sie in Webhook-Anfragen einfügen müssen:
{ "routing_key" : "<integration_key>", ...
Für diesen geheimen oder Integrationsschlüssel empfehlen wir, ein geheimes Objekt vom Typ generische Zeichenfolge zu erstellen. Dieses geheime Objekt wird auf die folgenden Arten verwendet:
Wenn Sie eine Webhook-Benachrichtigungsintegration erstellen, geben Sie dieses geheime Objekt in der Anweisung CREATE NOTIFICATION INTEGRATION an.
Wenn Sie eine Benachrichtigung senden, wird das geheime Objekt verwendet, um die HTTP-Anfrage für den Webhook zu erstellen.
Beachten Sie Folgendes:
Wenn Sie die Webhook-Benachrichtigungsintegration erstellen, müssen Sie eine Rolle verwenden, die über die Berechtigung USAGE für dieses Geheimnis verfügt.
Wenn Sie eine Benachrichtigung an diesen Webhook senden, müssen Sie eine Rolle verwenden, die über die Berechtigung READ für dieses Geheimnis sowie über Berechtigung USAGE für die Datenbank und das Schema verfügt, die das Geheimnis enthalten.
Um dieses Objekt zu erstellen, verwenden Sie den Befehl CREATE SECRET, und geben Sie TYPE=GENERIC_STRING an. Sie müssen eine Rolle verwenden, die über die Berechtigung CREATE SECRET für das Schema verfügt, in dem Sie planen, dieses Objekt zu erstellen.
In den nächsten Abschnitten finden Sie Beispiele für die Erstellung des geheimen Objekts.
Beispiel 1: Erstellen eines Geheimnisses für einen Slack-Webhook
Beispiel 2: Erstellen eines Geheimnisses für einen Teams-Webhook
Beispiel 3: Erstellen eines Geheimnisses für einen PagerDuty-Webhook
Beispiel 1: Erstellen eines Geheimnisses für einen Slack-Webhook¶
Angenommen, Sie möchten Benachrichtigungen an einen Slack-Webhook mit der folgenden URL senden:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
In diesem Beispiel enthält die Webhook-URL das Geheimnis T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
.
Führen Sie die folgende Anweisung aus, um ein geheimes Objekt für dieses Geheimnis zu erstellen:
CREATE OR REPLACE SECRET my_slack_webhook_secret
TYPE = GENERIC_STRING
SECRET_STRING = 'T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX';
Beispiel 2: Erstellen eines Geheimnisses für einen Teams-Webhook¶
Angenommen, Sie möchten Benachrichtigungen an einen Teams-Webhook mit der folgenden URL senden:
https://mymsofficehost.webhook.office.com/webhookb2/xxxxxxxx
In diesem Beispiel enthält die Webhook-URL das Geheimnis xxxxxxxx
.
Führen Sie die folgende Anweisung aus, um ein geheimes Objekt für dieses Geheimnis zu erstellen:
CREATE OR REPLACE SECRET my_teams_webhook_secret
TYPE = GENERIC_STRING
SECRET_STRING = 'xxxxxxxx';
Beispiel 3: Erstellen eines Geheimnisses für einen PagerDuty-Webhook¶
Angenommen, Sie möchten Benachrichtigungen an einen PagerDuty-Webhook senden und Ihr Integrationschlüssel (der Wert, den Sie in das Feld routing_key
in Anfragen einfügen müssen) lautet:
xxxxxxxx
Führen Sie die folgende Anweisung aus, um ein geheimes Objekt für dieses Geheimnis zu erstellen:
CREATE OR REPLACE SECRET my_pagerduty_webhook_secret
TYPE = GENERIC_STRING
SECRET_STRING = 'xxxxxxxx';
Erstellen einer Webhook-Benachrichtigungsintegration¶
Um eine Benachrichtigungsintegration vom Typ Webhook zu erstellen, verwenden Sie den Befehl CREATE NOTIFICATION INTEGRATION.
Legen Sie bei der Ausführung dieses Befehls die folgenden Eigenschaften fest, um die HTTP-Anfrage für die Benachrichtigung einzurichten.
Setzen Sie TYPE auf WEBHOOK.
Wenn Sie ein geheimes Objekt für ein Geheimnis erstellt haben, das in die URL den Textteil (Body) oder Header der HTTP-Anfrage, aufgenommen werden soll, legen Sie WEBHOOK_SECRET für den Namen dieses geheimen Objekts fest.
Legen Sie WEBHOOK_URL die URL für den Webhook fest.
Wenn die Webhook-URL ein Geheimnis enthält und Sie ein geheimes Objekt für dieses Geheimnis erstellt haben, ersetzen Sie das Geheimnis in der URL durch SNOWFLAKE_WEBHOOK_SECRET.
Wenn der Nachrichtentext für den Webhook in einem bestimmten Format für dieses externe System vorliegen muss (z. B. wenn alle an dieses System gesendeten Meldungen das gleiche Format verwenden müssen), legen Sie WEBHOOK_BODY_TEMPLATE als Vorlage für die Meldung fest. In dieser Vorlage:
Verwenden Sie den Platzhalter SNOWFLAKE_WEBHOOK_SECRET an der Stelle, an der das Geheimnis im Nachrichtentext erscheinen soll.
Verwenden Sie den Platzhalter SNOWFLAKE_WEBHOOK_MESSAGE an der Stelle, an der Benachrichtigungsmeldung erscheinen soll.
Wenn Sie SYSTEM$SEND_SNOWFLAKE_NOTIFICATION aufrufen und eine Meldung übergeben, verwendet die Prozedur die Vorlage, um den Body der Webhook-Anfrage zu erstellen. Die gespeicherte Prozedur ersetzt den Platzhalter SNOWFLAKE_WEBHOOK_MESSAGE durch die Meldung, die Sie übergeben.
Wenn die HTTP-Anfrage an den Webhook bestimmte HTTP-Header enthalten muss, legen Sie WEBHOOK_HEADERS für Liste der Headernamen und -werte fest
Verwenden Sie den Platzhalter SNOWFLAKE_WEBHOOK_SECRET, wenn das Geheimnis im Wert eines Headers erscheinen soll.
In den nächsten Abschnitten finden Sie Beispiele für Webhook-Benachrichtigungsintegrationen für verschiedene Arten von externen Systemen.
Beispiel 1: Erstellen einer Benachrichtigungsintegration für einen Slack-Webhook
Beispiel 2: Erstellen einer Benachrichtigungsintegration für einen Teams-Webhook
Beispiel 3: Erstellen einer Benachrichtigungsintegration für einen PagerDuty-Webhook
Beispiel 1: Erstellen einer Benachrichtigungsintegration für einen Slack-Webhook¶
Angenommen, Sie möchten Benachrichtigungen an einen Slack-Webhook mit der folgenden URL senden:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
Nehmen wir an, dass Sie ein geheimes Objekt mit dem Namen my_slack_webhook_secret
für das Geheimnis T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
erstellt haben, das in der URL erscheint.
Führen Sie die folgende Anweisung aus, um eine Benachrichtigungsintegration für diesen Webhook zu erstellen:
CREATE OR REPLACE NOTIFICATION INTEGRATION my_slack_webhook_int
TYPE=WEBHOOK
ENABLED=TRUE
WEBHOOK_URL='https://hooks.slack.com/services/SNOWFLAKE_WEBHOOK_SECRET'
WEBHOOK_SECRET=my_secrets_db.my_secrets_schema.my_slack_webhook_secret
WEBHOOK_BODY_TEMPLATE='{"text": "SNOWFLAKE_WEBHOOK_MESSAGE"}'
WEBHOOK_HEADERS=('Content-Type'='application/json');
Beispiel 2: Erstellen einer Benachrichtigungsintegration für einen Teams-Webhook¶
Angenommen, Sie möchten Benachrichtigungen an einen Teams-Webhook mit der folgenden URL senden:
https://mymsofficehost.webhook.office.com/webhookb2/xxxxxxxx
Nehmen wir an, dass Sie ein geheimes Objekt mit dem Namen my_teams_webhook_secret
für das Geheimnis xxxxxx
erstellt haben, das in der URL erscheint.
Führen Sie die folgende Anweisung aus, um eine Benachrichtigungsintegration für diesen Webhook zu erstellen:
CREATE OR REPLACE NOTIFICATION INTEGRATION my_teams_webhook_int
TYPE=WEBHOOK
ENABLED=TRUE
WEBHOOK_URL='https://mymsofficehost.webhook.office.com/webhookb2/SNOWFLAKE_WEBHOOK_SECRET'
WEBHOOK_SECRET=my_secrets_db.my_secrets_schema.my_teams_webhook_secret
WEBHOOK_BODY_TEMPLATE='{"text": "SNOWFLAKE_WEBHOOK_MESSAGE"}'
WEBHOOK_HEADERS=('Content-Type'='application/json');
Beispiel 3: Erstellen einer Benachrichtigungsintegration für einen PagerDuty-Webhook¶
Angenommen, Sie möchten Benachrichtigungen an einen PagerDuty-Webhook mit der folgenden URL senden:
https://events.pagerduty.com/v2/enqueue
Nehmen wir an, dass Sie ein geheimes Objekt mit dem Namen my_pagerduty_webhook_secret
für den Integrationsschlüssel xxxxxx
erstellt haben, das in das Feld routing_key
im Body der Meldung aufgenommen werden soll.
Führen Sie die folgende Anweisung aus, um eine Benachrichtigungsintegration für diesen Webhook zu erstellen:
CREATE OR REPLACE NOTIFICATION INTEGRATION my_pagerduty_webhook_int
TYPE=WEBHOOK
ENABLED=TRUE
WEBHOOK_URL='https://events.pagerduty.com/v2/enqueue'
WEBHOOK_SECRET=my_secrets_db.my_secrets_schema.my_pagerduty_webhook_secret
WEBHOOK_BODY_TEMPLATE='{
"routing_key": "SNOWFLAKE_WEBHOOK_SECRET",
"event_action": "trigger",
"payload": {
"summary": "SNOWFLAKE_WEBHOOK_MESSAGE",
"source": "Snowflake monitoring",
"severity": "INFO"
}
}'
WEBHOOK_HEADERS=('Content-Type'='application/json');
Senden einer Benachrichtigung an einen Webhook¶
So senden Sie eine Benachrichtigung an einen Webhook:
Übergeben Sie die Funktion SANITIZE_WEBHOOK_CONTENT, um alle Platzhalter (wie SNOWFLAKE_WEBHOOK_SECRET) aus der Meldung zu entfernen.
Rufen Sie die gespeicherte Prozedur SYSTEM$SEND_SNOWFLAKE_NOTIFICATION auf, übergeben Sie die bereinigte Meldung und geben Sie den Namen der zu verwendenden für Webhook-Benachrichtigungsintegration an.
Die folgende Anweisung sendet beispielsweise eine JSON-Meldung an einen Slack-Webhook und verwendet dabei die zuvor erstellte Benachrichtigungsintegration:
CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
SNOWFLAKE.NOTIFICATION.TEXT_PLAIN(
SNOWFLAKE.NOTIFICATION.SANITIZE_WEBHOOK_CONTENT('my message')
),
SNOWFLAKE.NOTIFICATION.INTEGRATION('my_slack_webhook_int')
);
In diesem Beispiel wird in der Anweisung eine Meldung in Klartext übergeben (my message
). Wenn Sie den Body der Webhook-Anfrage anhand der durch die Eigenschaft WEBHOOK_BODY_TEMPLATE der Benachrichtigungsintegration festgelegten Vorlage erstellen, ersetzt SYSTEM$SEND_SNOWFLAKE_NOTIFICATION SNOWFLAKE_WEBHOOK_MESSAGE den Platzhalter durch die von Ihnen übergebene Meldung.
Nehmen wir zum Beispiel an, dass Sie die folgende Vorlage für den Body der Anfrage angegeben haben:
CREATE OR REPLACE NOTIFICATION INTEGRATION my_slack_webhook_int
...
WEBHOOK_BODY_TEMPLATE='{"text": "SNOWFLAKE_WEBHOOK_MESSAGE"}'
...
SYSTEM$SEND_SNOWFLAKE_NOTIFICATION erstellt eine Anfrage mit dem folgenden Body:
{"text": "my message"}