Planung einer Abfrage mit dem Query Editor v2 - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Planung einer Abfrage mit dem Query Editor v2

Sie können einen Zeitplan für die Ausführung einer SQL-Anweisung mit dem Amazon Redshift Query Editor v2 erstellen. Sie erstellen einen Zeitplan, um die SQL-Anweisung in Zeitintervallen auszuführen, die Ihren Geschäftsanforderungen entsprechen. Wenn die geplante Abfrage ausgeführt werden soll, wird die Abfrage von Amazon gestartet EventBridge und verwendet die Amazon Redshift Data API.

So erstellen Sie einen Zeitplan für die Ausführung einer SQL-Anweisung
  1. Wählen Sie in der Ansicht Editor Editor die Option Schedule Zeitplan aus, um einen Zeitplan für die Ausführung einer SQL-Anweisung zu erstellen.

  2. Wenn Sie den Zeitplan definieren, geben Sie die folgenden Informationen an.

    • Die IAM-Rolle, die die erforderlichen Berechtigungen zum Ausführen der Abfrage übernimmt Diese IAM-Rolle ist auch Ihrem Cluster oder Ihrer Arbeitsgruppe angefügt.

    • Die Authentifizierungswerte für entweder AWS Secrets Manager temporäre Anmeldeinformationen zur Autorisierung des Zugriffs auf Ihren Cluster oder Ihre Arbeitsgruppe. Diese Authentifizierungsmethoden werden von der Daten-API unterstützt. Weitere Informationen finden Sie unter Authentifizieren einer geplanten Abfrage.

    • Den Cluster oder die Arbeitsgruppe, in dem/der sich Ihre Datenbank befindet

    • Den Namen der Datenbank, die die Daten enthält, die abgefragt werden sollen

    • Der Name der geplanten Abfrage und ihre Beschreibung. Der Abfrage-Editor v2 stellt dem angegebenen Namen der geplanten Abfrage das Präfix „QS2-“ voran. Der Query Editor v1 stellt Namen von geplanten Abfragen das Präfix „QS-“ voran.

    • Die SQL-Anweisung, die nach dem Zeitplan ausgeführt werden soll

    • Die Zeitplanfrequenz- und Wiederholungsoptionen oder einen cron-formatierten Wert, der den Zeitplan definiert. Weitere Informationen finden Sie unter Cron Expressions im Amazon CloudWatch Events-Benutzerhandbuch.

    • Optional können Sie Amazon-SNS-Standardbenachrichtigungen aktivieren, um die geplante Abfrage zu überwachen. Möglicherweise müssen Sie die E-Mail-Adresse bestätigen, die Sie für die Amazon-SNS-Benachrichtigung angegeben haben. Sehen Sie in Ihrem Posteingang nach, ob Sie einen Link zur Bestätigung der E-Mail-Adresse für die Amazon-SNS-Benachrichtigung erhalten haben. Weitere Informationen finden Sie unter E-Mail-Benachrichtigungen im Entwicklerhandbuch zu Amazon Simple Notification Service. Wenn Ihre Anfrage ausgeführt wird, Sie aber keine Nachrichten sehen, die in Ihrem SNS-Thema veröffentlicht wurden, finden Sie weitere Informationen unter Meine Regel wird ausgeführt, aber ich sehe keine Nachrichten, die in meinem Amazon SNS SNS-Thema veröffentlicht wurden, im EventBridge Amazon-Benutzerhandbuch.

  3. Wählen Sie Abfrage planen aus, um den Zeitplan zu speichern und zu aktivieren und den Zeitplan der Liste der Abfragen in der Ansicht Geplante Abfragen hinzuzufügen.

In der Ansicht Geplante Abfragen Scheduled queries sind alle geplanten Abfragen für Ihre Cluster und Arbeitsgruppen aufgeführt. In dieser Ansicht können Sie Details zur geplanten Abfrage anzeigen, den Zeitplan aktivieren oder deaktivieren, den Zeitplan bearbeiten und die geplante Abfrage löschen. Wenn Sie Abfragedetails anzeigen, können Sie auch den Verlauf der Ausführung der Abfrage mit dem Zeitplan einsehen.

Anmerkung

Eine planmäßige Abfrageausführung ist nur 24 Stunden in der Liste Planverlauf verfügbar. Abfragen, die nach einem Zeitplan ausgeführt werden, werden nicht in der Ansicht Abfrageverlauf von Abfrage-Editor v2 angezeigt.

Festlegen von Berechtigungen zum Planen einer Abfrage

Um Abfragen zu planen, muss der AWS Identity and Access Management (IAM-) Benutzer, der den Zeitplan und die dem Zeitplan zugeordnete IAM-Rolle definiert, mit den IAM-Berechtigungen für die Verwendung von Amazon EventBridge und der Amazon Redshift Data API konfiguriert sein. Wenn Sie E-Mails aus geplanten Abfragen erhalten möchten, muss die Amazon-SNS-Benachrichtigung, die optional angegeben werden kann, ebenfalls konfiguriert werden.

Im Folgenden werden die Aufgaben beschrieben, mit denen AWS verwaltete Richtlinien zur Erteilung von Berechtigungen verwendet werden. Abhängig von Ihrer Umgebung möchten Sie jedoch möglicherweise die zulässigen Berechtigungen einschränken.

Bearbeiten Sie den IAM-Benutzer, der beim Query Editor v2 angemeldet ist, mithilfe der IAM-Konsole (https://console.aws.amazon.com/iam/).

  • Zusätzlich zu den Berechtigungen zum Ausführen von Amazon Redshift- und Query Editor v2-Vorgängen können Sie die AmazonEventBridgeFullAccess und die AmazonRedshiftDataFullAccess AWS verwalteten Richtlinien an einen IAM-Benutzer anhängen.

  • Sie können auch die Berechtigungen einer Rolle zuweisen und die Rolle dem Benutzer zuweisen.

    Weisen Sie eine Richtlinie, die die Berechtigung sts:AssumeRole erteilt, dem Ressourcen-ARN der IAM-Rolle zu, die Sie angeben, wenn Sie die geplante Abfrage definieren. Weitere Informationen zur Übernahme von Rollen finden Sie unter Erteilen von Berechtigungen an einen Benutzer zum Wechseln von Rollen im IAM-Benutzerhandbuch.

    Das folgende Beispiel zeigt eine Berechtigungsrichtlinie, die die IAM-Rolle myRedshiftRole im Konto 123456789012 übernimmt. Die IAM-Rolle myRedshiftRole ist auch die IAM-Rolle, die dem Cluster oder der Arbeitsgruppe angefügt ist, in dem bzw. der die geplante Abfrage ausgeführt wird.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AssumeIAMRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::123456789012:role/myRedshiftRole" ] } ] }

    Aktualisieren Sie die Vertrauensrichtlinie der IAM-Rolle, die für die Planung der Abfrage verwendet wurde, damit der IAM-Benutzer sie übernehmen kann.

    { "Sid": "AssumeRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/myIAMusername" }, "Action": "sts:AssumeRole" } ] }

Bearbeiten Sie die IAM-Rolle, die Sie angeben, um die Ausführung der geplanten Abfrage zuzulassen, mithilfe der IAM-Konsole (https://console.aws.amazon.com/iam/).

  • Ordnen Sie die AmazonRedshiftDataFullAccess und AmazonEventBridgeFullAccess AWS verwalteten Richtlinien der IAM-Rolle zu. Die verwaltete Richtlinie AmazonRedshiftDataFullAccess erteilt redshift-serverless:GetCredentials nur Berechtigungen für Redshift-Serverless-Arbeitsgruppen, die mit dem Schlüssel RedshiftDataFullAccess gekennzeichnet sind.

Authentifizieren einer geplanten Abfrage

Wenn Sie eine Abfrage planen, verwenden Sie beim Ausführen der SQL-Anweisung eine der folgenden Authentifizierungsmethoden. Jede Methode erfordert eine andere Kombination von Eingaben im Query Editor v2. Diese Authentifizierungsmethoden werden von der Daten-API unterstützt, die zur Ausführung Ihrer SQL-Anweisungen verwendet wird.

Der Datenbankbenutzer oder die Rolle, der bzw. die zum Ausführen der Abfrage verwendet wird, muss über die erforderlichen Datenbankberechtigungen verfügen. Führen Sie den folgenden SQL-Befehl aus, um der Tabelle mytable zum Beispiel IAMR:MyRedshiftQEv2Scheduler-Berechtigungen zu erteilen.

GRANT all ON TABLE mytable TO "IAMR:MyRedshiftQEv2Scheduler";

Wenn Sie die Liste der Datenbankbenutzer in Ihrem Cluster oder Ihrer Arbeitsgruppe anzeigen möchten, fragen Sie die Systemansicht PG_USER_INFO ab.

Anmerkung

Jede Redshift Serverless-Arbeitsgruppe, für die Sie Abfragen planen, muss mit dem Schlüssel gekennzeichnet werden. RedshiftDataFullAccess Weitere Informationen finden Sie unter Autorisieren des Zugriffs auf die Amazon Redshift Data API.

Als Alternative zum Kennzeichnen der Arbeitsgruppe können Sie der IAM-Rolle (die im Zeitplan angegeben ist) eine Inline-Richtlinie hinzufügen, die redshift-serverless:GetCredentials erlaubt. Beispielsweise:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "UseTemporaryCredentialsForAllServerlessWorkgroups", "Effect": "Allow", "Action": "redshift-serverless:GetCredentials", "Resource": [ "arn:aws:redshift-serverless:*:*:workgroup/*" ] } ] }
AWS Secrets Manager

Geben Sie bei dieser Methode einen Secret-Wert für secret-arn an, der in AWS Secrets Manager gespeichert ist. Dieses Secret enthält Anmeldeinformationen zum Verbinden mit Ihrer Datenbank. Möglicherweise haben Sie bei der Erstellung Ihres Clusters oder Ihrer Arbeitsgruppe ein Geheimnis mit den richtigen Anmeldeinformationen erstellt. Das Secret muss mit dem Schlüssel RedshiftDataFullAccess markiert sein. Wenn der Tag-Schlüssel noch nicht vorhanden ist, verwenden Sie die AWS Secrets Manager Konsole, um ihn hinzuzufügen. Hinweise zum Erstellen eines Geheimnisses finden Sie unterEin Geheimnis für Datenbankverbindungsdaten erstellen.

Weitere Informationen zu den Mindestberechtigungen finden Sie unter Erstellen und Verwalten von Secrets mit AWS Secrets Manager im AWS Secrets Manager -Benutzerhandbuch.

Temporäre Anmeldeinformationen

Geben Sie bei dieser Methode Ihre Werte für Datenbankname und Datenbankbenutzer an, wenn Sie eine Verbindung mit einer Datenbank in einem Cluster herstellen. Sie müssen nur Ihren Wert für Datenbankname angeben, wenn Sie eine Verbindung mit einer Datenbank in einer Arbeitsgruppe herstellen.

Wenn Sie eine Verbindung mit einem Cluster herstellen, erteilt die AmazonRedshiftDataFullAccess-Richtlinie dem Datenbankbenutzer mit dem Namen redshift_data_api_user Berechtigung für redshift:GetClusterCredentials. Wenn Sie zum Ausführen der SQL-Anweisung einen anderen Datenbankbenutzer verwenden möchten, fügen Sie der Ihrem Cluster zugewiesenen IAM-Rolle eine Richtlinie hinzu, um redshift:GetClusterCredentials zu erlauben. Mit der folgenden Beispielrichtlinie werden die Datenbankbenutzer awsuser und myuser zugelassen.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "UseTemporaryCredentialsForAllDbUsers", "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": [ "arn:aws:redshift:*:*:dbuser:*/awsuser", "arn:aws:redshift:*:*:dbuser:*/myuser" ] } ] }

Festlegen von Berechtigungen zum Anzeigen des Zeitplanverlaufs der Abfrage

Damit Benutzer den Zeitplanverlauf der Abfrage anzeigen können, bearbeiten Sie die IAM-Rolle (die im Zeitplan angegeben ist) Vertrauensstellungen, um Berechtigungen hinzuzufügen.

Das folgende Beispiel zeigt eine Vertrauensrichtlinie in einer IAM-Rolle, die es dem IAM-Benutzer myIAMusername erlaubt, den Zeitplanverlauf einer Abfrage anzuzeigen. Anstatt einem IAM-Benutzer sts:AssumeRole-Berechtigung zu erteilen, können Sie diese Berechtigung wahlweise einer IAM-Rolle gewähren.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "redshift-serverless.amazonaws.com" ] }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "AssumeRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/myIAMusername" }, "Action": "sts:AssumeRole" } ] }

Überwachung der geplanten Abfrage

Für das Amazon-SNS-Thema, das Sie für den Versand von E-Mail-Benachrichtigungen angeben, erstellen Sie das Amazon-SNS-Thema mit dem Abfrage-Editor v2, indem Sie zum Abschnitt SNS-Benachrichtigungen navigieren, Aktivieren für die Überwachung und SNS-Thema erstellen auswählen. Der Abfrage-Editor v2 erstellt das Amazon SNS SNS-Thema und fügt der Zugriffsrichtlinie für Amazon EventBridge einen Service Principal hinzu. Das folgende Beispiel zeigt eine Zugriffsrichtlinie, die im Amazon-SNS-Thema erstellt wurde. In dem Beispiel werden die Themen AWS-Region us-west-2, AWS-Konto 123456789012 und Amazon SNS verwendet. select-version-pdx-testunload

{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "Allow_Publish_Events", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-west-2:123456789012:select-version-pdx-testunload" } ] }

Wenn die geplante Abfrage ausgeführt wird, sendet Amazon SNS AWS Benachrichtigungs-E-Mails. Das folgende Beispiel zeigt eine E-Mail, die an myemail@example.com für die geplante Abfrage QS2-May25A gesendet wurde, die auf AWS-Region eu-north-1 in AWS-Konto 123456789012 ausgeführt wurde, wobei das Amazon SNS SNS-Benachrichtigungsthema May25a-SNS verwendet wurde.

{"version":"0","id":"8e4323ec-5258-7138-181b-91290e30ff9b","detail-type":"Scheduled Event","source":"aws.events","account":"123456789012","time":"2023-05-25T15:22:00Z", "region":"eu-north-1","resources":["arn:aws:events:eu-north-1:123456789012:rule/QS2-may25a"],"detail":{}} -- If you wish to stop receiving notifications from this topic, please click or visit the link below to unsubscribe: https://sns.eu-north-1.amazonaws.com/unsubscribe.html?SubscriptionArn=arn:aws:sns:eu-north-1:123456789012:may25a-SNS:0c1a3d05-39c2-4507-bc3d-47250513d7b0&Endpoint=myemail@example.com Please do not reply directly to this email. If you have any questions or comments regarding this email, please contact us at https://aws.amazon.com/support

Fehlerbehebung bei der Einrichtung oder Planung einer Abfrage

Beachten Sie Folgendes, wenn Sie Probleme beim Planen einer Abfrage haben.

Abfragen, die nicht ausgeführt werden

Prüfen Sie, ob die im Zeitplan verwendete IAM-Rolle berechtigt ist, die temporären Cluster-Anmeldeinformationen abzurufen. Die Berechtigung für bereitgestellte Cluster lautet redshift:GetClusterCredentialsWithIAM. Die Berechtigung für Redshift-Serverless-Arbeitsgruppen lautet redshift-serverless:GetCredentials.

Der geplante Verlauf wird nicht angezeigt

Der IAM-Benutzer oder die IAM-Rolle, mit der Sie sich bei der Konsole angemeldet haben, wurde nicht zur Vertrauensrichtlinie der IAM-Rolle hinzugefügt, die für die Planung der AWS Abfrage verwendet wurde.

Wenn Sie die Verbindung AWS Secrets Manager für die geplante Abfrage verwenden, vergewissern Sie sich, dass das Geheimnis mit dem Schlüssel gekennzeichnet ist. RedshiftDataFullAccess

Wenn die geplante Abfrage eine AWS Secrets Manager Verbindung verwendet, muss der IAM-Rolle, die für die Planung der Abfrage verwendet wird, der Rolle das Äquivalent einer verwalteten Richtlinie SecretsManagerReadWrite zugewiesen sein.

Der Status des Abfrageverlaufs lautet Failed

In der SYS_QUERY_HISTORY-Systemansicht finden Sie Einzelheiten darüber, warum die Abfrage fehlgeschlagen ist. Ein häufiges Problem ist, dass der Datenbankbenutzer oder die Rolle, der bzw. die für die Ausführung der Abfrage verwendet wurde, möglicherweise nicht über die erforderliche Berechtigung zum Ausführen der SQL-Anweisung verfügte. Weitere Informationen finden Sie unter Authentifizieren einer geplanten Abfrage.

Mit der folgenden SQL-Anweisung wird die SYS_QUERY_HISTORY-Ansicht abgefragt, um fehlgeschlagene Abfragen zurückzugeben.

SELECT user_id, query_id, transaction_id, session_id, database_name, query_type, status, error_message, query_text FROM sys_query_history WHERE status = 'failed';

Details zu einer bestimmten fehlgeschlagenen geplanten Abfrage finden Sie unter Details zu geplanten Abfragen finden Sie mit AWS CloudShell.

Details zu geplanten Abfragen finden Sie mit AWS CloudShell

Sie können AWS CloudShell es verwenden, um Details zu einer Zeitplanabfrage herauszufinden. Sie müssen über die entsprechenden Berechtigungen verfügen, um die im folgenden Verfahren beschriebenen AWS CLI Befehle ausführen zu können.

So zeigen Sie die Ergebnisse einer geplanten Abfrage an
  1. Öffnen Sie auf der AWS Konsole die AWS CloudShell Eingabeaufforderung. Weitere Informationen zu AWS CloudShell finden Sie unter Was ist AWS CloudShell im AWS CloudShell Benutzerhandbuch.

  2. Übernehmen Sie die IAM-Rolle der geplanten Abfrage. Um die Rolle zu übernehmen, suchen Sie im Abfrage-Editor v2 nach der IAM-Rolle, die der geplanten Abfrage zugeordnet ist, und verwenden Sie sie im AWS CLI Befehl in AWS CloudShell. schedulerGeben Sie beispielsweise für die Rolle einen AWS STS Befehl ein, um die Rolle zu übernehmen, die von der geplanten Abfrage verwendet wird.

    aws sts assume-role —role-arn "arn:aws:iam::123456789012:role/scheduler" —role-session-name "scheduler-test"

    Die zurückgegebenen Anmeldeinformationen sehen ähnlich wie die folgenden aus.

    "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY...", "Expiration": "2023-08-18T18:19:44+00:00" }, "AssumedRoleUser": { "AssumedRoleId": "AROA35B2NH6WBTP7ONL4E:scheduler-test", "Arn": "arn:aws:sts::123456789012:assumed-role/scheduler/scheduler-test" } }
  3. Erstellen Sie Umgebungsvariablen unter AWS CLI Verwendung der Anmeldeinformationen, die bei der Übernahme der IAM-Rolle angezeigt werden. Sie müssen diese Tokens vor ihrer Ablaufzeit verwenden. Sie geben beispielsweise Folgendes in AWS CloudShell ein.

    export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY...
  4. Um den Fehler einer fehlgeschlagenen Abfrage anzuzeigen, führen Sie den AWS CLI Befehl zur Beschreibung einer Anweisung aus. Die ID der SQL-Anweisung stammt von der ID, die im Abschnitt Planverlauf einer geplanten Abfrage im Abfrage-Editor v2 angezeigt wird.

    aws redshift-data describe-statement —id 130d2620-05d2-439c-b7cf-815d9767f513

    In diesem Beispiel führt der geplante SQL-Code select * from users limit 100 zu einem SQL-Fehler, weil die Tabelle users nicht vorhanden ist.

    { "CreatedAt": "2023-08-18T17:39:15.563000+00:00", "Duration": -1, "Error": "ERROR: relation \"users\" does not exist", "HasResultSet": false, "Id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "QueryString": "select * from users limit 100\n—RequestID=a1b2c3d4-5678-90ab-cdef-EXAMPLE22222; TraceID=1-633c5642-4039308d03f3a0ba53dbdf6f", "RedshiftPid": 1073766651, "RedshiftQueryId": 0, "ResultRows": -1, "ResultSize": -1, "Status": "FAILED", "UpdatedAt": "2023-08-18T17:39:16.116000+00:00", "WorkgroupName": "default" }

Demo der Planung einer Abfrage

Eine Demo der Planung einer Abfrage sehen Sie im folgenden Video.