Verwenden von SYSTEM$SEND_SNOWFLAKE_NOTIFICATION zum Versenden von Benachrichtigungen

Bemerkung

Alle Snowflake-Kunden können mit diesem Feature E-Mail-Nachrichten versenden. E-Mail-Nachrichten, die von der Notifications System Stored Procedure gesendet werden, werden über die Snowflake-Bereitstellung für Amazon Web Services (AWS) und unter Verwendung des AWS Simple Email Service (SES) verarbeitet. Der Inhalt einer mit AWS gesendeten E-Mail-Nachricht kann von Snowflake bis zu dreißig Tage lang aufbewahrt werden, um die Zustellung der Nachricht zu verwalten. Nach Ablauf dieser Frist wird der Inhalt der Nachricht gelöscht.

Wenn Sie Benachrichtigungen an eine E-Mail-Adresse, einen Webhook oder eine von einem Clouddienst (Amazon SNS, Google Cloud PubSub oder Azure Event Grid) bereitgestellte Warteschlange senden müssen, verwenden Sie die gespeicherte Prozedur SYSTEM$SEND_SNOWFLAKE_NOTIFICATION.

Mit nur einem Aufruf dieser gespeicherten Prozedur können Sie Folgendes ausführen:

  • Senden einer Nachricht an mehrere Typen von Zielen (E-Mail-Adressen und Warteschlangen)

  • Senden Sie eine Meldung an mehrere E-Mail-Adressen, Webhooks und Warteschlangen.

  • Senden einer Nachricht in einem bestimmten Format, je nach Typ der Benachrichtigungsintegration (Klartext oder HTML für E-Mail, JSON für Warteschlangen).

So können Sie beispielsweise mit einem einzigen Aufruf Nachrichten in den Formaten einfacher Text, HTML und JSON an mehrere E-Mail-Adressen und mehrere SNS-, PubSub- und Event Grid-Themen senden.

Sie können mehrere Benachrichtigungsintegrationen verwenden, um die Benachrichtigung an verschiedene Warteschlangen zu senden. Sie können auch mehrere E-Mail-Benachrichtigungsintegrationen mit unterschiedlichen E-Mail-Adressen und Betreffzeilen erstellen, was die Konfiguration von E-Mail-Nachrichten für verschiedene Empfänger vereinfacht.

Benachrichtigung senden

Bevor Sie eine Benachrichtigung senden, müssen Sie eine Benachrichtigungsintegration haben, mit der Sie die Benachrichtigung versenden. Wenn Sie eine E-Mail-Benachrichtigung versenden, müssen Sie auch die E-Mail-Adressen der Empfänger validieren. Weitere Details dazu finden Sie unter Benachrichtigungen in Snowflake.

Um eine Benachrichtigung an E-Mail-Adressen oder Warteschlangen zu senden, rufen Sie die gespeicherte Prozedur SYSTEM$SEND_SNOWFLAKE_NOTIFICATION auf und geben dabei die Nachrichten und die zu verwendenden Benachrichtigungsintegrationen an.

Im folgenden Beispiel wird diese gespeicherte Prozedur aufgerufen:

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"]
    }
  }'
);
Copy

Wie im obigen Beispiel gezeigt, übergeben Sie JSON-formatierte Zeichenfolgen als Argumente, um die zu sendende Nachricht und die zu verwendende Benachrichtigungsintegration anzugeben.

Die Syntax für diese Zeichenfolgen finden Sie unter SYSTEM$SEND_SNOWFLAKE_NOTIFICATION.

Um diese JSON-formatierten Zeichenfolgen zu erstellen, können Sie Hilfsfunktionen wie TEXT_HTML zum Angeben der Nachricht und EMAIL_INTEGRATION_CONFIG zum Angeben von Benachrichtigungsintegration, Betreffzeile und E-Mail-Adressen aufrufen. Beispiel:

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

Eine Liste der Hilfsfunktionen, die Sie verwenden können, finden Sie unter SYSTEM$SEND_SNOWFLAKE_NOTIFICATION.

Überschreiben Sie die Standardwerte in der E-Mail-Benachrichtigungsintegration

Wenn Sie eine andere Gruppe von Empfängern oder eine andere Betreffzeile als die in der E-Mail-Benachrichtigungsintegration angegebene Standardeinstellungen verwenden möchten, legen Sie die folgenden Eigenschaften des Integrationskonfigurationsobjekts fest, das Sie an SYSTEM$SEND_SNOWFLAKE_NOTIFICATION übergeben:

  • subject (darf maximal 256 Zeichen lang sein)

  • toAddress

  • ccAddress

  • bccAddress

So verwenden Sie beispielsweise die E-Mail-Benachrichtigungsintegration my_email_int und überschreiben die Betreffzeile, die Zeile „An:“, die Zeile „Cc:“ und die Zeile „Bcc:“:

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"]
    }
  }'
);
Copy

Um die JSON-formatierten Zeichenfolge für die Integrationskonfiguration zu erstellen, können Sie die Hilfsfunktion EMAIL_INTEGRATION_CONFIG aufrufen:

Um zum Beispiel die E-Mail-Nachricht mit der Betreffzeile „Service down“ an oncall-a@snowflake.com und oncall-b@snowflake.com zu senden, führen Sie die folgende Anweisung aus:

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

Um die Zeilen „Cc:“ und „Bcc:“ in die E-Mail-Nachricht aufzunehmen, übergeben Sie zusätzliche Argumente mit Arrays von E-Mail-Adressen für diese Zeilen:

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

Wenn Sie nur eine der beiden Zeilen „Cc:“ oder „Bcc:“ festlegen möchten, übergeben Sie ein leeres Array oder NULL für das entsprechende Argument. Wenn Sie das JSON-Objekt ohne die Hilfsfunktion erstellen, lassen Sie die Eigenschaft ccAddress oder bccAddress im JSON-Objekt weg.

HTML-, Klartext- und JSON-Meldungen senden

Um eine Nachricht in HTML, Klartext oder JSON zu senden, übergeben Sie ein JSON-Objekt, das den Nachrichtentyp als Namen der Eigenschaft und die Nachricht als Wert der Eigenschaft enthält:

'{ "<message_type>": "<message>" }'
Copy

"message_type" kann einer der folgenden Werte sein:

  • "text/html"

  • "text/plain"

  • "application/json"

Beispiel:

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  '{ "text/html": "<p>This is a message.</p>" }',
  '{ "my_email_int": {} }'
);
Copy

Um das JSON-Objekt für die Nachricht zu erstellen, können Sie die folgenden Hilfsfunktionen verwenden:

Das folgende Beispiel sendet eine HTML-Nachricht unter Verwendung der E-Mail-Benachrichtigungsintegration my_email_int:

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  SNOWFLAKE.NOTIFICATION.TEXT_HTML('<p>a message</p>'),
  SNOWFLAKE.NOTIFICATION.INTEGRATION('my_email_int')
);
Copy

Das folgende Beispiel sendet eine Klartextnachricht, die dieselbe Integration verwendet:

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  SNOWFLAKE.NOTIFICATION.TEXT_PLAIN('A message'),
  SNOWFLAKE.NOTIFICATION.INTEGRATION('my_email_int')
);
Copy

Das folgende Beispiel sendet eine JSON-Nachricht an die von der Benachrichtigungsintegration my_queue_int angegebene Warteschlange. Anleitungen zum Erstellen einer Benachrichtigungsintegration für eine Warteschlange finden Sie unter folgenden Themen:

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{ "name": "value" }'),
  SNOWFLAKE.NOTIFICATION.INTEGRATION('my_sns_int')
);
Copy

Benachrichtigung über mehrere Integrationen senden

In folgenden Fällen können Sie mehrere Integrationen verwenden, um Nachrichten zu versenden:

  • Sie möchten mit demselben Funktionsaufruf eine Nachricht per E-Mail und an ein Thema senden.

  • Sie möchten eine Nachricht an verschiedene E-Mail-Adressen senden, die von verschiedenen E-Mail-Benachrichtigungsintegrationen angegeben wurden.

Um mehrere Integrationen zu verwenden, rufen Sie die Funktion ARRAY_CONSTRUCT. Erstellen Sie ein Array von Integrationskonfigurationen, und übergeben Sie das Array als zweites Argument an die gespeicherte Prozedur SYSTEM$SEND_SNOWFLAKE_NOTIFICATION.

So senden Sie zum Beispiel eine Klartextnachricht an eine Warteschlange und an E-Mail-Adressen, die in verschiedenen Benachrichtigungsintegrationen konfiguriert sind:

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  '{"text/plain":"A message"}',
  ARRAY_CONSTRUCT(
    '{"my_sns_int":{}}',
    '{"my_email_int":{}}',
 )
);
Copy

Bemerkung

Das Array kann nicht mehr als ein Objekt für dieselbe Benachrichtigungsintegration enthalten.

Wenn Sie es vorziehen, zum Erstellen der Integrationskonfigurationen die Hilfsfunktionen zu verwenden, können Sie die von den Hilfsfunktionen zurückgegebenen Werte an die Funktion ARRAY_CONSTRUCT übergeben. Beispiel:

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

Das folgende Beispiel sendet Nachrichten in verschiedenen Formaten an eine Warteschlange und an E-Mail-Adressen:

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