Wie plane ich Abfragen für einen Amazon Redshift-Cluster?
Ich möchte eine Abfrage so planen, dass sie in einem Amazon Redshift-Cluster ausgeführt wird.
Behebung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Verwende den Abfrage-Editor v2, um SQL-Abfragen für die bereitgestellten Amazon Redshift-Cluster auszuführen, anzuzeigen, zu speichern und zu planen.
Berechtigungen für den Abfrage-Editor konfigurieren
Bevor du eine geplante Abfrage erstellst, musst du die richtigen Rollen und Berechtigungen für AWS Identity and Access Management (IAM) konfigurieren. Bei geplanten Abfragen muss Amazon EventBridge die Abfrage termingerecht initiieren und die Amazon Redshift Data API die Abfrage auf dem Cluster ausführen.
Sowohl der IAM-Benutzer, der den Zeitplan erstellt, als auch die IAM-Rolle, die die Abfrage ausführt, müssen über die entsprechenden Berechtigungen verfügen.
IAM-Benutzerzugriff
Du kannst Richtlinien wie AmazonRedshiftDataFullAccess und AmazonEventBridgeFullAccess anhängen.
Du kannst auch eine benutzerdefinierte Richtlinie mit spezifischeren Berechtigungen erstellen. Weitere Informationen findest du unter Berechtigungen zum Planen einer Abfrage einrichten.
Ausführungsrolle für Abfragen
Um geplante Abfragen auszuführen, identifiziere oder erstelle eine IAM-Rolle für das Amazon Redshift-Cluster oder die Amazon Redshift Serverless-Arbeitsgruppe.
Hänge dann die Richtlinien wie AmazonRedshiftDataFullAccess und AmazonEventBridgeFullAccess an, damit Amazon Redshift die Rolle übernehmen und geplante Aktionen ausführen kann.
Weitere Informationen findest du unter Verwenden identitätsbasierter Richtlinien (IAM-Richtlinien) für Amazon Redshift.
Rollenkonfiguration annehmen
Aktualisiere die Vertrauensrichtlinie der Rolle, damit der Scheduling-Prinzipal sie übernehmen kann. Verwende dann die Amazon Redshift-Konsole oder den AWS-CLI-Befehl modify-cluster-iam-roles, um die Rolle mit dem Amazon Redshift-Cluster oder der Amazon Redshift Serverless-Arbeitsgruppe zu verknüpfen.
Datenbankauthentifizierung
Speicherne die Anmeldeinformationen in einem AWS Secrets Manager-Geheimnis, auf den die IAM-Rolle zugreifen kann.
Füge die entsprechenden Tags hinzu, um die Nutzung der Amazon Redshift-Data-API zu ermöglichen. Konfiguriere die IAM-Rolle, um temporäre Amazon Redshift-Anmeldeinformationen zu erhalten. Die Cluster- oder Arbeitsgruppen-IAM-Rolle muss dem Prinzipal vertrauen und derDatenbankbenutzer muss über die erforderlichen Berechtigungen verfügen.
Weitere Informationen findest du unter Authentifizieren einer geplanten Abfrage.
Abfragen auf der Amazon Redshift-Konsole planen
Führe die folgenden Schritte aus:
- Öffne die Amazon Redshift-Konsole.
- Wähle im Navigationsbereich Editor und dann wähle Abfrage-Editor V2.
- Stelle eine Verbindung zu einer Datenbank im Cluster her.
- Erstelle einen Abfragezeitplan, um eine SQL-Anweisung auszuführen.
- (Optional) Wenn du Secrets Manager mit Amazon Redshift verwendest, wähle dein Geheimnis aus.
- (Optional) Wenn du temporäre IAM-Benutzeranmeldedaten verwendest, wähle das Cluster aus und gib die Datenbank und die Benutzernamen an.
Hinweis: Um die GetClusterCredentials-Aktion aufrufen zu können, musst duüber einen Mindestanzahl an Berechtigungen verfügen.
Gehe wie folgt vor, um die neu erstellten Zeitpläne anzuzeigen:
- Öffne die Amazon Redshift-Konsole.
- Wähle im Navigationsbereich Editor und dann wähle Abfrage-Editor V2.
- Wähle Geplante Abfragen.
Du kannst Amazon Simple Notification Service (Amazon SNS)-Benachrichtigungen aktivieren, um den Ausführungsstatus der Abfrage zu überwachen.
Wenn du Amazon SNS aktiviert hast, stelle sicher, dass die API-Aktion Veröffentlichen für events.amazonaws.com vorhanden ist.
Beispiel für eine Zugriffsrichtlinie, die die Aktion Veröffentlichen für events.amazonaws.com beinhaltet:
{ "Sid": "Allow_Publish_Events", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-1:{ACCOUNT_ID}:{SNS_TOPIC_NAME}" }
Weitere Informationen findest du unter Überwachung der geplanten Abfrage.
Abfragen mit EventBridge planen
Du kannst EventBridge und die Amazon Redshift-Data-API verwenden, um SQL-Anweisungen zu planen.
Führe die folgenden Schritte aus:
-
Definiere eine EventBridge-Ereignisregel mit dem Namen scheduled-refresh-currentEvents .
-
Verwende die EventBridge-Konsole, um die Ereignisregel so zu planen, dass sie regelmäßig oder zu einer bestimmten Zeit ausgeführt wird. Oder führe den folgenden AWS-CLI-Befehl put-rule aus:
aws events put-rule \ --name scheduled-refresh-currentEvents \ --schedule-expression "cron(0/5 * * * ? *)"Hinweis: Ersetze 5 durch die Anzahl der Minuten, die zwischen den Aktualisierungen liegen sollen.
-
Verwende einen Texteditor, um die folgende JSON-Datei mit dem Namen refreshCurrentEvents.json zu erstellen und zu speichern:
{ "Rule": "scheduled-refresh-currentEvents", "EventBusName": "default", "Targets": [ { "Id": "scheduled-refresh-currentEvents", "Arn": "Clsuter ARN", "RoleArn": "Role ARN", "RedshiftDataParameters": { "SecretManagerArn": "Secrets Manager ARN", "Database": "Database Name", "Sql": "REFRESH MATERIALIZED VIEW currentEvents;", "StatementName": "scheduled-refresh-currentEvents", "WithEvent": true } } ] }Hinweis: Ersetze Cluster-ARN, ARN der ArnSecrets-Manager-Rolle durch die ARN-Werte.
-
Führe den folgenden Befehl put-targets aus, um ein Ereignisziel mit der gespeicherten JSON-Datei zu erstellen:
aws events put-targets --cli-input-json file://refreshCurrentEvents.json -
Führe den folgenden Befehl remove-targets aus, um die Ziele zu entfernen:
aws events remove-targets --rule scheduled-refresh-currentEvents --ids scheduled-refresh-currentEvents -
Führe den folgenden Befehl delete-rule aus, um die Regel zu löschen:
aws events delete-rule --name scheduled-refresh-currentEvents
SQL-Status und Ergebnisse anzeigen
Führe die folgenden Schritte aus:
-
Öffne die Amazon Redshift-Konsole.
-
Wähle im Navigationsbereich Editor und dann wähle Abfrage-Editor V2.
-
Wähle Geplante Abfragen.
-
Wähle die Abfrage aus.
-
Notiere dir im Planverlauf die ID, die du in einem späteren Schritt verwenden möchtest.
-
Führe den folgenden Befehl assume-role aus, um die Abfrageergebnisse abzurufen:
aws sts assume-role --role-arn "Role ARN" --role-session-name Example Session NameHinweis: Ersetze Rollen-ARN durch den ARN der Rolle, die du für die Planung der Abfrage verwendest und Beispiel für einen Sitzungsnamen durch den Sitzungsnamen. Die Ausgabe des Befehls gibt die Zugriffsschlüssel-ID, den geheimen Zugriffsschlüssel und das Sitzungs-Token zurück.
-
Führe die folgenden Exportbefehle aus, um die Umgebungsvariablen zu konfigurieren:
export AWS_ACCESS_KEY_ID=ExampleRoleAccessKeyID export AWS_SECRET_ACCESS_KEY=ExampleRoleSecretAccessKey export AWS_SESSION_TOKEN=ExampleSessionTokenHinweis: Ersetze die Beispielwerte durch deine Werte.
-
Führe den Befehl redshift-data mit get-statement-result aus, um die Ergebnisse abzurufen:
aws redshift-data get-statement-result --id ID --region RegionHinweis: Ersetze ID durch die Kontoauszug-ID und Region durch die AWS-Region.
Ähnliche Informationen
Warum kann ich in Amazon Redshift keine Verbindung zum AmazonRedshiftQueryEditor herstellen?
Verwenden der Amazon Redshift Data API für die Interaktion mit Amazon Redshift-Clustern
Erstellen einer Regel, die nach einem Zeitplan in Amazon EventBridge ausgeführt wird
- Themen
- Analytics
- Tags
- Amazon Redshift
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 2 Jahren
AWS OFFICIALAktualisiert vor 3 Jahren
AWS OFFICIALAktualisiert vor einem Jahr