Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting
Erstellen einer S3-Ereignisintegration, um Dateien automatisch aus Amazon-S3-Buckets zu kopieren
Anmerkung
Die Vorschauversion für auto-copy ist abgelaufen. Daher werden Vorschau-Cluster 30 Tage nach dem Ende der Vorschauversion automatisch entfernt. Wenn Sie auto-copy weiterhin verwenden möchten, sollten Sie Ihre bestehenden auto-copy-Jobs in einem anderen Amazon-Redshift-Cluster neu erstellen. Upgrades von Vorschau-Clustern auf die neueste Amazon-Redshift-Version werden nicht unterstützt.
Sie können einen auto-copy-Job verwenden, um Daten aus Dateien, die in Amazon S3 gespeichert sind, in Ihre Amazon-Redshift-Tabellen zu laden. Amazon Redshift erkennt, wenn neue Amazon-S3-Dateien zu dem in Ihrem COPY-Befehl angegebenen Pfad hinzugefügt werden. Ein COPY-Befehl wird dann automatisch ausgeführt, ohne dass Sie eine externe Datenerfassungspipeline erstellen müssen. Amazon Redshift verfolgt, welche Dateien geladen wurden. Amazon Redshift bestimmt die Anzahl der Dateien, die für jeden COPY-Befehl zusammengefasst werden. Sie können die resultierenden COPY-Befehle in Systemansichten sehen.
Der erste Schritt zur Erstellung eines automatischen COPY JOB besteht in der Erstellung einer S3-Ereignisintegration. Wenn eine neue Datei im Quell-Bucket in Amazon S3 erscheint, verwaltet Amazon Redshift anschließend das Laden der Dateien in Ihre Datenbank mittels des Befehls COPY.
Voraussetzungen für die Erstellung einer S3-Ereignisintegration
Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind, um Ihre S3-Ereignisintegration einzurichten.
Der Amazon-S3-Bucket muss über eine Bucket-Richtlinie verfügen, die mehrere Amazon-S3-Berechtigungen zulässt. Die folgende Beispielrichtlinie lässt beispielsweise Berechtigungen für den Ressourcen-Bucket
amzn-s3-demo-bucketzu, der inus-east-1gehostet wird. Sowohl der Amazon-S3-Bucket als auch die Integration befinden sich in der derselben AWS-Region.Der von Amazon Redshift bereitgestellte Zielcluster oder der Redshift-Serverless-Namespace muss über Berechtigungen für den Bucket verfügen. Überprüfen Sie, ob eine IAM-Rolle, die Ihrem Cluster oder Serverless Namespace zugeordnet ist, über eine IAM-Richtlinie verfügt, die die richtigen Berechtigungen zulässt. Die Richtlinie muss sowohl
s3:GetObjectfür eine Bucket-Ressource wieals auchamzn-s3-demo-buckets3:ListBucketfür eine Bucket-Ressource und ihren Inhalt zulassen, z. B..amzn-s3-demo-bucket/*Fügen Sie Ihre Richtlinie wie folgt zu einer IAM-Rolle hinzu, für die eine Vertrauensbeziehung besteht.
Wenn Ihr Ziel-Data-Warehouse ein bereitgestellter Cluster ist, können Sie Ihrem bereitgestellten Cluster über die Amazon-Redshift-Konsole auf der Registerkarte Cluster-Berechtigungen in den Cluster-Details eine IAM-Rolle zuordnen. Informationen dazu, wie Sie Ihrem bereitgestellten Cluster eine Rolle zuordnen, finden Sie unter Zuordnen von IAM-Rollen zu Clustern im Managementleitfaden zu Amazon Redshift.
Wenn Ihr Ziel-Data-Warehouse Redshift Serverless ist, können Sie Ihrem Serverless-Namespace über die Redshift-Serverless-Konsole auf der Registerkarte Sicherheit und Verschlüsselung in den Namespace-Details eine IAM-Rolle zuordnen. Informationen dazu, wie Sie Ihrem Serverless-Namespace eine Rolle zuordnen, finden Sie unter Gewähren von Berechtigungen für Amazon Redshift Serverless im Managementleitfaden zu Amazon Redshift.
Ihr Data Warehouse in Amazon Redshift muss auch über eine Ressourcenrichtlinie verfügen, die den Amazon-S3-Bucket zulässt. Wenn Sie die Amazon-Redshift-Konsole verwenden und die S3-Ereignisintegration erstellen, bietet Amazon Redshift die Option Reparieren, um diese Richtlinie zu Ihrem Data Warehouse in Amazon Redshift hinzuzufügen. Zum Aktualisieren einer Ressourcenrichtlinie können Sie den AWS CLI-Befehl put-resource-policy verwenden. Um beispielsweise eine Ressourcenrichtlinie an Ihren von Amazon Redshift bereitgestellten Cluster für eine S3-Ereignisintegration mit einem Amazon-S3-Bucket anzufügen, führen Sie einen AWS CLI-Befehl ähnlich dem folgenden aus. Das folgende Beispiel zeigt eine Richtlinie für einen bereitgestellten Cluster-Namespace in der AWS-Region
us-east-1für das Benutzerkonto123456789012. Der Name des Buckets istamzn-s3-demo-bucket.aws redshift put-resource-policy \ --policy file://rs-rp.json \ --resource-arn "arn:aws:redshift:us-east-1:123456789012:namespace/cc4ffe56-ad2c-4fd1-a5a2-f29124a56433"Wobei
rs-rp.jsonFolgendes enthält:Um Ihrem Redshift-Serverless-Namespace eine Ressourcenrichtlinie für eine S3-Ereignisintegration mit einem Amazon-S3-Bucket anzufügen, führen Sie einen AWS CLI-Befehl ähnlich dem folgenden aus. Das folgende Beispiel zeigt eine Richtlinie für einen Serverless-Namespace in der AWS-Region
us-east-1für das Benutzerkonto123456789012. Der Name des Buckets istamzn-s3-demo-bucket.aws redshift put-resource-policy \ --policy file://rs-rp.json \ --resource-arn "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/namespace-1"Wobei
rs-rp.jsonFolgendes enthält:
Erstellen einer Amazon-S3-Ereignisintegration
Um den Kopierjob einzurichten, definieren Sie zunächst eine S3-Ereignisintegration.
Amazon Redshift erstellt anschließend eine S3-Ereignisintegration mit zugehöriger Quelle und zugehörigem Ziel, Status sowie Informationen zum Status eines zugehörigen auto-copy-Jobs. Sie können Informationen zu einer S3-Ereignisintegration in der Amazon-Redshift-Konsole anzeigen, indem Sie S3-Ereignisintegrationen auswählen und dann die Integration auswählen, um ihre Details anzuzeigen. Die Integrationen werden getrennt nach In meinem Konto und Aus anderen Konten angezeigt. In der Liste In meinem Konto werden Integrationen angezeigt, bei denen sich Quelle und Ziel im selben Konto befinden. In der Liste Aus anderen Konten werden Integrationen angezeigt, bei denen die Quelle im Besitz eines anderen Kontos ist.
Wenn Sie eine S3-Ereignisintegration löschen, wird der entsprechende COPY JOB-Status von 1 (aktiv) in 0 (inaktiv/ausstehend) geändert. Der entsprechende COPY JOB wird jedoch nicht automatisch entfernt. Wenn Sie später versuchen, einen COPY JOB mit demselben Namen zu erstellen, liegt möglicherweise ein Konflikt vor.
Erstellen und Überwachen eines COPY JOB
Wählen Sie nach der Integration auf der Seite Details zur S3-Ereignisintegration für die von Ihnen erstellte Integration die Option auto-copy-Job erstellen aus. Anschließend gelangen Sie zu Amazon Redshift Query Editor V2, wo Sie den auto-copy-Job für die Integration erstellen können. Amazon Redshift ordnet den Bucket in der FROM-Klausel in der Anweisung COPY JOB CREATE dem Bucket zu, der in der S3-Ereignisintegration verwendet wird. Weitere Informationen zur Verwendung von Amazon Redshift Query Editor V2 finden Sie unter Abfragen einer Datenbank mit Amazon Redshift Query Editor V2 im Managementleitfaden zu Amazon Redshift. Sie können beispielsweise den folgenden COPY-Befehl in Query Editor V2 ausführen, um einen automatischen COPY JOB zu erstellen, der den Amazon-S3-Bucket s3://amzn-s3-demo-bucket/staging-folder einer Amazon-S3-Ereignisintegration zuordnet.
COPY public.target_table FROM 's3://amzn-s3-demo-bucket/staging-folder' IAM_ROLE 'arn:aws:iam::123456789012:role/MyLoadRoleName' JOB CREATE my_copy_job_name AUTO ON;
Sie definieren einen COPY JOB einmalig. Für zukünftige Ausführungen werden dieselben Parameter verwendet.
Um einen COPY JOB zu definieren und zu verwalten, benötigen Sie die entsprechende Berechtigung. Hinweise zum Erteilen und Widerrufen von Berechtigungen für einen COPY JOB finden Sie unter GRANT und REVOKE. Weitere Informationen zum Erteilen und Widerrufen von bereichsbezogenen Berechtigungen für einen COPY JOB finden Sie unter Gewähren von bereichsbezogenen Berechtigungen und Widerrufen von bereichsbezogenen Berechtigungen.
Sie verwalten die Ladevorgänge mithilfe der Optionen CREATE, LIST, SHOW, DROP, ALTER und RUN. Weitere Informationen finden Sie unter COPY JOB.
Sie können Systemansichten abfragen, um den Status und Fortschritt von COPY JOB anzuzeigen. Die Ansichten werden wie folgt bereitgestellt:
SYS_COPY_JOB – enthält eine Zeile für jeden derzeit definierten COPY JOB.
SYS_COPY_JOB_DETAIL – enthält Details zu ausstehenden, fehlerhaften und erfassten Dateien für jeden COPY JOB.
SYS_COPY_JOB_INFO – enthält protokollierte Meldungen zu einem COPY JOB.
SYS_LOAD_HISTORY – enthält Details zu COPY-Befehlen.
SYS_LOAD_ERROR_DETAIL – enthält Details zu Fehlern bei COPY-Befehlen.
SVV_COPY_JOB_INTEGRATIONS – enthält Details zu S3-Ereignisintegrationen.
STL_LOAD_ERRORS – enthält Fehler von COPY-Befehlen.
STL_LOAD_COMMITS – enthält Informationen, die zur Behebung von Fehlern beim Laden von COPY-Befehlsdaten verwendet werden.
Informationen zur Behebung von Fehlern für S3-Ereignisintegrationen finden Sie unter Behebung von Fehlern für die S3-Ereignisintegration und für COPY JOB.
Um die Liste der über COPY JOB geladenen Dateien abzurufen, führen Sie die folgende SQL-Syntax aus und ersetzen dabei <job_id>:
SELECT job_id, job_name, data_source, copy_query, filename, status, curtime FROM sys_copy_job copyjob JOIN stl_load_commits loadcommit ON copyjob.job_id = loadcommit.copy_job_id WHERE job_id =<job_id>;
Überlegungen beim Erstellen einer S3-Ereignisintegration für auto-copy
Beachten Sie Folgendes, wenn Sie auto-copy verwenden.
Sie können maximal 200 COPY JOBS für jeden Cluster oder jede Arbeitsgruppe in einem AWS-Konto erstellen.
Sie können maximal 50 S3-Ereignisintegrationen für jedes Amazon-Redshift-Ziel erstellen.
Sie können keine S3-Ereignisintegration mit einem Quell-Bucket in Amazon S3 erstellen, der im Namen einen Punkt (.) enthält.
Sie können jeweils nur eine S3-Ereignisintegration zwischen derselben Quelle und demselben Ziel erstellen. Das bedeutet, dass es jeweils nur eine S3-Ereignisintegration zwischen einem Amazon-S3-Bucket und einem Data Warehouse in Amazon Redshift geben kann.
Es darf keine vorhandenen Ereignisbenachrichtigungen für den Ereignistyp
S3_OBJECT_CREATEDgeben, die im Quell-Bucket in Amazon S3 definiert sind. Nach der Erstellung einer S3-Ereignisintegration können Sie die Ereignisbenachrichtigung für den Amazon-S3-Bucket mit einem Präfix/Suffix mit einem engeren Gültigkeitsbereich aktualisieren. Auf diese Weise können SieS3_OBJECT_CREATEDauch mit einem anderen Präfix/Suffix für andere Ziele konfigurieren und so einen Konflikt mit der S3-Ereignisintegration vermeiden. Wenn auto-copy nicht wie erwartet ausgeführt wurde, erstellen Sie das AWS CloudTrail-Protokoll der Aktions3:PutBucketNotificationConfigurationim S3-Bucket für den fraglichen Zeitraum, wenn Sie sich an den AWS -Support wenden.
Unterstützte Regionen
Folgende AWS-Regionen sind für auto-copy verfügbar.
| Region | Auto-copy |
|---|---|
| Afrika (Kapstadt) | Verfügbar |
| Asien-Pazifik (Hongkong) | Verfügbar |
| Asien-Pazifik (Taipeh) | Verfügbar |
| Asien-Pazifik (Tokio) | Verfügbar |
| Asien-Pazifik (Seoul) | Verfügbar |
| Asien-Pazifik (Osaka) | Verfügbar |
| Asien-Pazifik (Mumbai) | Verfügbar |
| Asien-Pazifik (Hyderabad) | Verfügbar |
| Asien-Pazifik (Singapur) | Verfügbar |
| Asien-Pazifik (Sydney) | Verfügbar |
| Asien-Pazifik (Jakarta) | Verfügbar |
| Asien-Pazifik (Melbourne) | Verfügbar |
| Asien-Pazifik (Malaysia) | Verfügbar |
| Asien-Pazifik (Neuseeland) | Nicht verfügbar |
| Asien-Pazifik (Thailand) | Verfügbar |
| Kanada (Zentral) | Verfügbar |
| Kanada West (Calgary) | Verfügbar |
| China (Peking) | Verfügbar |
| China (Ningxia) | Verfügbar |
| Europa (Frankfurt) | Verfügbar |
| Europa (Zürich) | Verfügbar |
| Europa (Stockholm) | Verfügbar |
| Europa (Mailand) | Verfügbar |
| Europa (Spanien) | Verfügbar |
| Europa (Irland) | Verfügbar |
| Europa (London) | Verfügbar |
| Europa (Paris) | Verfügbar |
| Israel (Tel Aviv) | Verfügbar |
| Naher Osten (VAE) | Verfügbar |
| Naher Osten (Bahrain) | Verfügbar |
| Mexiko (Zentral) | Verfügbar |
| Südamerika (São Paulo) | Verfügbar |
| USA Ost (Nord-Virginia) | Verfügbar |
| USA Ost (Ohio) | Verfügbar |
| USA West (Nordkalifornien) | Verfügbar |
| USA West (Oregon) | Verfügbar |
| AWS GovCloud (USA-Ost) | Verfügbar |
| AWS GovCloud (USA-West) | Verfügbar |