Erstellen einer Benachrichtigungsintegration zum Senden von Benachrichtigungen an ein Amazon SNS-Thema

Um Benachrichtigungen an ein Amazon SNS-Thema zu senden, müssen Sie eine Benachrichtigungsintegration für dieses Thema erstellen. Gehen Sie dabei wie folgt vor:

  1. Erstellen eines Amazon SNS-Themas

  2. Erstellen der IAM-Richtlinie, die Berechtigungen zur Veröffentlichung in diesem Thema erteilt.

  3. Erstellen der IAM-Rolle, die mit dieser Richtlinie verknüpft wird.

  4. Erstellen Sie eine Benachrichtigungsintegration.

  5. Snowflake Zugriff auf das Thema gewähren.

Bemerkung

Derzeit ist dieses Feature auf Snowflake-Konten beschränkt, die auf AWS gehostet werden.

Erstellen eines Amazon SNS-Themas

Erstellen Sie ein SNS-Thema in Ihrem AWS-Konto, das die Benachrichtigung verarbeiten soll. 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.

Erstellen Sie die 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. Wählen Sie Create Policy aus.

  7. Wählen Sie die Registerkarte JSON aus.

  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 zuvor erstellt haben.

  9. Wählen Sie Review policy aus.

  10. Geben Sie den Richtliniennamen (z. B. snowflake_sns_topic) und eine optionale Beschreibung ein, und wählen Sie Create policy aus.

AWS-IAM-Rolle erstellen

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. Wählen Sie Create role aus.

  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. Wählen Sie Next aus.

  9. Suchen Sie die zuvor erstellte Richtlinie, und wählen Sie diese Richtlinie aus.

  10. Wählen Sie Next aus.

  11. Geben Sie einen Namen und eine Beschreibung für die Rolle ein, und wählen Sie Create role aus.

  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.

Benachrichtigungsintegration erstellen

Führen Sie den Befehl CREATE NOTIFICATION INTEGRATION aus, um eine Benachrichtigungsintegration zu erstellen. Eine Integration ist ein Snowflake-Objekt, das auf das von Ihnen erstellte SNS-Thema verweist.

Bemerkung

Wenn Sie planen, die Integration für Benachrichtigungen über Fehler in Aufgaben oder Pipes zu verwenden, kann eine einzelne Benachrichtigungsintegration mehrere Aufgaben oder Pipes unterstützen.

Wenn Sie den Befehl ausführen, legen Sie diese Parameter auf die folgenden Werte fest:

Beispiel:

CREATE NOTIFICATION INTEGRATION my_notification_int
  ENABLED = TRUE
  DIRECTION = OUTBOUND
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = AWS_SNS
  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

Snowflake Zugriff auf das SNS-Thema gewähren

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

  1. Führen Sie den Befehl DESCRIBE INTEGRATION aus, um die Eigenschaften der Benachrichtigungsintegration anzuzeigen, die Sie gerade erstellt haben.

    So zeigen Sie beispielsweise die Eigenschaften der Benachrichtigungsintegration namens my_notification_int an:

    DESC NOTIFICATION INTEGRATION my_notification_int;
    
    Copy
    +---------------------------+-------------------+------------------------------------------------------+----------------------+
    |   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=   |                      |
    +---------------------------+-------------------+------------------------------------------------------+----------------------+
    
  2. Notieren Sie sich die Werte der folgenden Eigenschaften:

    • 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 zuvor erstellte IAM-Rolle, 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. Wählen Sie die zuvor erstellte Rolle aus.

  5. Wählen Sie die Registerkarte Trust relationships aus.

  6. Wählen Sie Edit trust relationship aus.

  7. Ändern Sie das Richtliniendokument, um die zuvor notierten Eigenschaftswerte der Benachrichtigungsintegration zu verwenden.

    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. Wählen Sie Update Trust Policy aus. Die Änderungen werden gespeichert.