Aktivieren von Snowpipe-Fehlerbenachrichtigungen für Amazon SNS¶
Dieses Thema enthält Anweisungen für die Übermittlung von Snowpipe-Fehlerbenachrichtigungen an den Amazon Simple Notification Service (SNS). SNS ist ein Publish/Subscribe-Nachrichtendienst.
Mit diesem Feature können Fehlerbenachrichtigungen für die folgenden Typen von Workloads ausgegeben werden:
Automatische Erfassung mit Snowpipe.
Aufrufe des Snowpipe-REST-API-Endpunkts für
insertFiles
.Workload von Apache Kafka unter Verwendung des Snowflake-Konnektors für Kafka nur mit der Snowpipe-Erfassungsmethode.
Unter diesem Thema:
Unterstützung von Cloudplattformen¶
Dieses Feature ist auf Snowflake-Konten beschränkt, die auf Amazon Web Services (AWS) gehostet werden. Snowpipe kann zwar Daten aus Dateien in jedem unterstützten Cloudspeicherdienst laden, Push-Benachrichtigungen an den SNS werden jedoch nur bei Snowflake-Konten unterstützt, die auf AWS gehostet werden.
Anmerkungen¶
Dieses Feature wird mithilfe des Benachrichtigungsintegrationsobjekts implementiert. Eine Benachrichtigungsintegration ist ein Snowflake-Objekt, das als Schnittstelle zwischen Snowflake und Cloud-Meldungswarteschlangendiensten von Drittanbietern dient. Eine einzelne Benachrichtigungsintegration kann mehrere Pipes unterstützen.
Snowflake garantiert eine mindestens einmalige Zustellung von Fehlerbenachrichtigungen (d. h. es werden mehrere Versuche unternommen, um sicherzustellen, dass mindestens ein Versuch erfolgreich ist, was zu doppelten Meldungen führen kann).
Aktivieren von Fehlerbenachrichtigungen¶
Erstellen der Benachrichtigungsintegration¶
Aktivieren von Fehlerbenachrichtigungen in Pipes¶
Eine einzelne Benachrichtigungsintegration kann von mehreren Pipes gemeinsam genutzt werden. Im Hauptteil der Fehlermeldung werden unter anderem die Pipe, der externe Stagingbereich mit seinem Pfad sowie die Datei, in der der Fehler aufgetreten ist, angegeben.
Um Fehlerbenachrichtigungen für eine Pipe zu aktivieren, geben Sie einen ERROR_INTEGRATION-Parameterwert an.
Bemerkung
Zum Erstellen oder Ändern einer Pipe, die auf eine Benachrichtigungsintegration verweist, ist eine Rolle erforderlich, die über die Berechtigung USAGE für die Benachrichtigungsintegration verfügt. Außerdem muss die Rolle entweder die CREATE PIPE-Berechtigung für das Schema oder die OWNERSHIP-Berechtigung für die Pipe haben.
Beachten Sie, dass für die Bearbeitung eines Objekts in einem Schema auch die Berechtigung USAGE für die übergeordnete Datenbank und das Schema erforderlich ist.
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Neue Pipe¶
Erstellen Sie eine neue Pipe mit CREATE PIPE. Beachten Sie, dass für die Konfiguration des automatischen Ladens von Daten (z. B. automatische Erfassung mit Snowpipe) zusätzliche Pipe-Parameter erforderlich sind. Eine Anleitung dazu finden Sie unter Automatisieren des kontinuierlichen Ladens von Daten mithilfe von Cloudmessaging.
CREATE PIPE <name>
[ AUTO_INGEST = TRUE | FALSE ]
ERROR_INTEGRATION = <integration_name>
AS <copy_statement>
Wobei:
ERROR_INTEGRATION = <Name_der_Integration>
Name der Benachrichtigungsintegration, die Sie unter Benachrichtigungsintegration erstellen erstellt haben.
Das folgende Beispiel zeigt eine CREATE PIPE-Anweisung, die sowohl Fehlerbenachrichtigungen als auch das automatische Laden von Daten unterstützt:
CREATE PIPE mypipe
AUTO_INGEST = TRUE
ERROR_INTEGRATION = my_notification_int
AS
COPY INTO mydb.public.mytable
FROM @mydb.public.mystage;
Vorhandene Pipe¶
Ändern Sie eine vorhandene Pipe mit ALTER PIPE:
ALTER PIPE <name> SET ERROR_INTEGRATION = <integration_name>;
Wobei <Name_der_Integration>
ist der Name der Benachrichtigungsintegration, die Sie unter Benachrichtigungsintegration erstellen erstellt haben.
Beispiel:
ALTER PIPE mypipe SET ERROR_INTEGRATION = my_notification_int;
Meldungsnutzlast von Fehlerbenachrichtigungen¶
Im Hauptteil der Fehlermeldungen werden die Pipe und die während des Ladevorgangs aufgetretenen Fehler angegeben.
Nachfolgend finden Sie ein Beispiel für eine Meldungsnutzlast, die einen Snowpipe-Fehler beschreibt. Die Nutzlast kann eine oder mehrere Fehlermeldungen enthalten.
{\"version\":\"1.0\",\"messageId\":\"a62e34bc-6141-4e95-92d8-f04fe43b43f5\",\"messageType\":\"INGEST_FAILED_FILE\",\"timestamp\":\"2021-10-22T19:15:29.471Z\",\"accountName\":\"MYACCOUNT\",\"pipeName\":\"MYDB.MYSCHEMA.MYPIPE\",\"tableName\":\"MYDB.MYSCHEMA.MYTABLE\",\"stageLocation\":\"s3://mybucket/mypath\",\"messages\":[{\"fileName\":\"/file1.csv_0_0_0.csv.gz\",\"firstError\":\"Numeric value 'abc' is not recognized\"}]}
Beachten Sie, dass Sie die Zeichenfolge in ein JSON-Objekt parsen müssen, um die Werte in der Nutzlast zu verarbeiten.