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
Wählen Sie in der Ansicht Editor
die Option
Zeitplan aus, um einen Zeitplan für die Ausführung einer SQL-Anweisung zu erstellen.
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.
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 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 dieAmazonRedshiftDataFullAccess
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 Konto123456789012
übernimmt. Die IAM-RollemyRedshiftRole
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
undAmazonEventBridgeFullAccess
AWS verwalteten Richtlinien der IAM-Rolle zu. Die verwaltete RichtlinieAmazonRedshiftDataFullAccess
erteiltredshift-serverless:GetCredentials
nur Berechtigungen für Redshift-Serverless-Arbeitsgruppen, die mit dem SchlüsselRedshiftDataFullAccess
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 Namenredshift_data_api_user
Berechtigung fürredshift: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, umredshift:GetClusterCredentials
zu erlauben. Mit der folgenden Beispielrichtlinie werden die Datenbankbenutzerawsuser
undmyuser
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
verwendet wurde.eu-north-1
in AWS-Konto 123456789012
ausgeführt wurde, wobei das Amazon SNS SNS-Benachrichtigungsthema May25a-SNS
{"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 lautetredshift-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
Ö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.
Ü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.
scheduler
Geben 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" } }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...
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 Tabelleusers
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.