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:
Erstellen der IAM-Richtlinie, die Berechtigungen zur Veröffentlichung in diesem Thema erteilt.
Erstellen der IAM-Rolle, die mit dieser Richtlinie verknüpft wird.
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.
Anmelden bei der AWS Management Console.
Wählen Sie auf dem Startseiten-Dashboard die Option Identity & Access Management (IAM) aus.
Wählen Sie im linken Navigationsbereich Account settings aus.
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.
Wählen Sie im linken Navigationsbereich Policies aus.
Wählen Sie Create Policy aus.
Wählen Sie die Registerkarte JSON aus.
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>" } ] }
Ersetzen Sie
sns_topic_arn
durch den ARN des SNS-Themas, das Sie zuvor erstellt haben.Wählen Sie Review policy aus.
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.
Anmelden bei der AWS Management Console.
Wählen Sie auf dem Startseiten-Dashboard die Option Identity & Access Management (IAM) aus:
Wählen Sie im linken Navigationsbereich Roles aus.
Wählen Sie Create role aus.
Wählen Sie Another AWS account als vertrauenswürdigen Entitätstyp aus.
Geben Sie im Feld Account ID vorläufig Ihre eigene AWS-Konto-ID ein.
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.Wählen Sie Next aus.
Suchen Sie die zuvor erstellte Richtlinie, und wählen Sie diese Richtlinie aus.
Wählen Sie Next aus.
Geben Sie einen Namen und eine Beschreibung für die Rolle ein, und wählen Sie Create role aus.
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:
Stellen Sie AWS_SNS_TOPIC_ARN auf den zuvor notierten ARN des SNS-Themas ein.
Stellen Sie AWS_SNS_ROLE_ARN auf den zuvor notierten ARN der IAM-Rolle ein.
Bemerkung
Beim AWS_SNS_ROLE_ARN-Wert wird zwischen Groß- und Kleinschreibung unterschieden. Verwenden Sie den genauen Wert, der in Ihrem AWS-Konto angegeben ist.
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';
Snowflake Zugriff auf das SNS-Thema gewähren¶
IAM-Benutzer-ARN und externe SNS-Thema-ID abrufen¶
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;
+---------------------------+-------------------+------------------------------------------------------+----------------------+ | 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= | | +---------------------------+-------------------+------------------------------------------------------+----------------------+
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¶
Anmelden bei der AWS Management Console.
Wählen Sie auf dem Startseiten-Dashboard die Option Identity & Access Management (IAM) aus:
Wählen Sie im linken Navigationsbereich Roles aus.
Wählen Sie die zuvor erstellte Rolle aus.
Wählen Sie die Registerkarte Trust relationships aus.
Wählen Sie Edit trust relationship aus.
Ä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>" } } } ] }
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.
Wählen Sie Update Trust Policy aus. Die Änderungen werden gespeichert.