Aktivieren von Fehlerbenachrichtigungen für Aufgaben über AWS SNS

Unter diesem Thema wird eine Anleitung zur Konfiguration von Fehlerbenachrichtigungen für Aufgaben unter Verwendung von Amazon Web Services Simple Notification Service (AWS SNS) bereitgestellt.

Aktivieren von Fehlerbenachrichtigungen mit Amazon AWS SNS

Um Aufgabenbenachrichtigungen zu aktivieren, führen Sie die in den nächsten Abschnitten beschriebenen Schritte aus.

Schritt 1: Erstellen eines Amazon SNS-Themas

Erstellen Sie ein SNS-Thema in Ihrem AWS-Konto, um alle Fehlermeldungen zu bearbeiten. Notieren Sie sich den Amazon Resource Name (ARN) für das SNS-Thema.

Bemerkung

Es werden nur die SNS-Standardthemen unterstützt. Erstellen Sie keine SNS-FIFO-Themen (First in, First out) für die Verwendung mit Fehlerbenachrichtigungen. Derzeit schlagen Fehlerbenachrichtigungen, die an FIFO-Themen gesendet werden, ohne Reaktion fehl.

Um die Latenz zu verringern und Gebühren für ausgehende Daten für das Senden von Benachrichtigungen zwischen Regionen zu vermeiden, empfehlen wir, das SNS-Thema in derselben Region wie Ihr Snowflake-Konto zu erstellen.

Eine Anleitung dazu finden Sie in der SNS-Dokumentation unter Erstellen eines Amazon SNS-Themas.

Schritt 2: Erstellen der IAM-Richtlinie

Erstellen Sie eine AWS-Richtlinie für die Identitäts- und Zugriffsverwaltung (IAM), die Berechtigungen zur Veröffentlichung im SNS-Thema erteilt. In der Richtlinie sind die folgenden Aktionen definiert:

  • sns:publish

    Veröffentlichen im SNS-Thema.

  1. Anmelden bei der AWS Management Console.

  2. Wählen Sie auf dem Startseiten-Dashboard die Option Identity & Access Management (IAM) aus:

  3. Wählen Sie im linken Navigationsbereich Account settings aus.

  4. Erweitern Sie die Security Token Service Regions-Liste, suchen Sie die AWS-Region, die der Region entspricht, in der sich Ihr Konto befindet, und wählen Sie Activate, wenn der Status Inactive ist.

  5. Wählen Sie im linken Navigationsbereich Policies aus.

  6. Klicken Sie auf Create Policy.

  7. Klicken Sie auf die Registerkarte JSON.

  8. Fügen Sie ein Richtliniendokument hinzu, das Aktionen definiert, die für Ihr SNS-Thema ausgeführt werden können.

    Kopieren Sie den Text, und fügen Sie ihn in den Richtlinieneditor ein:

    {
        "Version": "2012-10-17",
        "Statement": [
          {
             "Effect": "Allow",
             "Action": [
                 "sns:Publish"
             ],
             "Resource": "<sns_topic_arn>"
          }
        ]
     }
    
    Copy

    Ersetzen Sie sns_topic_arn durch den ARN des SNS-Themas, das Sie in Schritt 1: Erstellen eines Amazon SNS-Themas (unter diesem Thema) erstellt haben.

  9. Klicken Sie auf Review policy.

  10. Geben Sie den Richtliniennamen (z. B. snowflake_sns_topic) und eine optionale Beschreibung ein. Klicken Sie auf Create policy.

Schritt 3: Erstellen der AWS-IAM-Rolle

Erstellen Sie eine AWS-IAM-Rolle, der Sie Berechtigung für das SNS-Thema zuweisen können.

  1. Anmelden bei der AWS Management Console.

  2. Wählen Sie auf dem Startseiten-Dashboard die Option Identity & Access Management (IAM) aus:

  3. Wählen Sie im linken Navigationsbereich Roles aus.

  4. Klicken Sie auf die Schaltfläche Create role.

  5. Wählen Sie Another AWS account als vertrauenswürdigen Entitätstyp aus.

  6. Geben Sie im Feld Account ID vorläufig Ihre eigene AWS-Konto-ID ein.

  7. Wählen Sie die Option Require external ID aus. Mit dieser Option können Sie Dritten (z. B. Snowflake) Berechtigungen für die Ressourcen Ihres Amazon-Kontos (d. h. SNS) erteilen.

    Geben Sie vorläufig eine Dummy-ID ein, wie z. B. 0000. Später werden Sie die Vertrauensstellung ändern und die Dummy-ID durch die externe ID für den Snowflake-IAM-Benutzer ersetzen, der für Ihr Konto erstellt wurde. Eine Bedingung in der Vertrauensrichtlinie Ihrer IAM-Rolle ermöglicht es Ihren Snowflake-Benutzern, die Rolle mithilfe des Benachrichtigungsintegrationsobjekts zu übernehmen, das Sie später erstellen werden.

  8. Klicken Sie auf die Schaltfläche Next.

  9. Suchen Sie die Richtlinie, die Sie in Schritt 2: Erstellen der IAM-Richtlinie (unter diesem Thema) erstellt haben, und wählen Sie diese Richtlinie aus.

  10. Klicken Sie auf die Schaltfläche Next.

  11. Geben Sie einen Namen und eine Beschreibung für die Rolle ein, und klicken Sie auf die Schaltfläche Create role.

  12. Notieren Sie den Role ARN-Wert, der auf der Übersichtsseite der Rolle angegeben ist. Sie werden diesen Wert in einem oder mehreren späteren Schritten angeben.

Schritt 4: Erstellen der Benachrichtigungsintegration

Erstellen Sie eine Benachrichtigungsintegration mit CREATE NOTIFICATION INTEGRATION. Eine Integration ist ein Snowflake-Objekt, das auf das von Ihnen erstellte SNS-Thema verweist.

Eine einzelne Benachrichtigungsintegration kann mehrere Aufgaben und Pipes unterstützen.

Bemerkung

Dieser SQL-Befehl kann nur von Kontoadministratoren (Benutzer mit der Rolle ACCOUNTADMIN) oder von Rollen mit der globalen Berechtigung CREATE INTEGRATION ausgeführt werden.

CREATE NOTIFICATION INTEGRATION <integration_name>
  ENABLED = true
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = AWS_SNS
  DIRECTION = OUTBOUND
  AWS_SNS_TOPIC_ARN = '<topic_arn>'
  AWS_SNS_ROLE_ARN = '<iam_role_arn>'
Copy

Wobei:

<Name_der_Integration>

Name der neuen Integration.

DIRECTION = OUTBOUND

Richtung für das Cloudmessaging in Bezug auf Snowflake. Nur für das Konfigurieren von Fehlerbenachrichtigungen erforderlich.

<ARN_des_Themas>

SNS-Thema-ARN, den Sie sich in Schritt 1: Erstellen eines Amazon SNS-Themas (unter diesem Thema) notiert haben.

<ARN_der_IAM-Rolle>

IAM-Rollen-ARN, den Sie sich in Schritt 3: Erstellen der AWS-IAM-Rolle (unter diesem Thema) notiert haben.

Beispiel:

CREATE NOTIFICATION INTEGRATION my_notification_int
  ENABLED = true
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = AWS_SNS
  DIRECTION = OUTBOUND
  AWS_SNS_TOPIC_ARN = 'arn:aws:sns:us-east-2:111122223333:sns_topic'
  AWS_SNS_ROLE_ARN = 'arn:aws:iam::111122223333:role/error_sns_role';
Copy

Schritt 5: Snowflake Zugriff auf das SNS-Thema gewähren

IAM-Benutzer-ARN und externe SNS-Thema-ID abrufen

  1. Führen Sie DESCRIBE INTEGRATION aus:

    DESC NOTIFICATION INTEGRATION <integration_name>;
    
    Copy

    Wobei:

    • integration_name ist der Name der Benachrichtigungsintegration, die Sie in Schritt 4: Erstellen der Benachrichtigungsintegration (unter diesem Thema) erstellt haben.

    Beispiel:

    DESC NOTIFICATION INTEGRATION my_notification_int;
    
    +---------------------------+-------------------+------------------------------------------------------+----------------------+
    |   property                |   property_type   |   property_value                                     |   property_default   |
    +---------------------------+-------------------+------------------------------------------------------+----------------------+
    |   ENABLED                 |   Boolean         |   true                                               |   false              |
    |   NOTIFICATION_PROVIDER   |   String          |   AWS_SNS                                            |                      |
    |   DIRECTION               |   String          |   OUTBOUND                                           |   INBOUND            |
    |   AWS_SNS_TOPIC_ARN       |   String          |   arn:aws:sns:us-east-2:111122223333:myaccount       |                      |
    |   AWS_SNS_ROLE_ARN        |   String          |   arn:aws:iam::111122223333:role/myrole              |                      |
    |   SF_AWS_IAM_USER_ARN     |   String          |   arn:aws:iam::123456789001:user/c_myaccount         |                      |
    |   SF_AWS_EXTERNAL_ID      |   String          |   MYACCOUNT_SFCRole=2_a123456/s0aBCDEfGHIJklmNoPq=   |                      |
    +---------------------------+-------------------+------------------------------------------------------+----------------------+
    
    Copy
  2. Notieren Sie sich die folgenden generierten Werte:

    SF_AWS_IAM_USER_ARN

    ARN des Snowflake-IAM-Benutzers, der für Ihr Konto erstellt wurde. Die Benutzer in Ihrem Snowflake-Konto übernehmen die IAM-Rolle, die Sie in Schritt 3: Erstellen der AWS-IAM-Rolle erstellt haben, indem Sie die externe ID dieses Benutzers über Ihre Benachrichtigungsintegration übermitteln.

    SF_AWS_EXTERNAL_ID

    Externe ID des Snowflake-IAM-Benutzers, der für Ihr Konto erstellt wurde.

    Im nächsten Schritt werden Sie die Vertrauensstellung für die IAM-Rolle mit diesen Werten aktualisieren.

Beachten Sie die Eigenschaft DIRECTION, die die Richtung für das Cloudmessaging in Bezug auf Snowflake angibt.

Vertrauensstellung in der IAM-Rolle ändern

  1. Anmelden bei der AWS Management Console.

  2. Wählen Sie auf dem Startseiten-Dashboard die Option Identity & Access Management (IAM) aus:

  3. Wählen Sie im linken Navigationsbereich Roles aus.

  4. Klicken Sie auf die Rolle, die Sie in Schritt 3: AWS-IAM-Rolle erstellen (unter diesem Thema) erstellt haben.

  5. Klicken Sie auf die Registerkarte Trust relationships.

  6. Klicken Sie auf die Schaltfläche Edit trust relationship.

  7. Ändern Sie das Richtliniendokument mit den DESC NOTIFICATION INTEGRATION-Ausgabewerten, die Sie sich unter IAM-Benutzer-ARN und externe SNS-Thema-ID abrufen (unter diesem Thema) notiert haben:

    Richtliniendokument für die IAM-Rolle

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "AWS": "<sf_aws_iam_user_arn>"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "sts:ExternalId": "<sf_aws_external_id>"
            }
          }
        }
      ]
    }
    
    Copy

    Wobei:

    • sf_aws_iam_user_arn ist der von Ihnen notierte SF_AWS_IAM_USER_ARN-Wert.

    • sf_aws_external_id ist der von Ihnen notierte SF_AWS_EXTERNAL_ID-Wert.

  8. Klicken Sie auf die Schaltfläche Update Trust Policy. Die Änderungen werden gespeichert.

Schritt 6: Aktivieren von Fehlerbenachrichtigungen in Aufgaben

Anschließend aktivieren Sie die Fehlerbenachrichtigung entweder in einer eigenständigen Aufgabe oder in einer Stammaufgabe, indem Sie ERROR_INTEGRATION den Namen der Benachrichtigungsintegration zuweisen. Sie können den Parameterwert beim Erstellen einer Aufgabe (mit CREATE TASK) oder später (mit ALTER TASK) festlegen.

Weitere Informationen dazu finden Sie unter Konfigurieren einer Aufgabe zum Senden von Fehlerbenachrichtigungen.