Verwenden der Amazon Redshift Data API - Amazon Redshift

Verwenden der Amazon Redshift Data API

Sie können über die integrierte Amazon Redshift Data API auf Ihre Amazon-Redshift-Datenbank zugreifen. Mit dieser API können Sie mit Webservice-basierten Anwendungen wie AWS Lambda, Amazon SageMaker Notebooks und AWS Cloud9 auf Amazon-Redshift-Daten zugreifen. Weitere Informationen zu diesen Anwendungen finden Sie unter AWS Lambda, Amazon SageMaker und AWS Cloud9.

Die Data API erfordert keine persistente Verbindung zum Cluster. Stattdessen bietet sie einen sicheren HTTP-Endpunkt und Integration in AWS SDKs. Über den Endpunkt können Sie SQL-Anweisungen ausführen, ohne Verbindungen zu verwalten. Aufrufe der Data API erfolgen asynchron.

Die Data API verwendet entweder Anmeldeinformationen, die in AWS Secrets Manager gespeichert sind, oder temporäre Datenbank-Anmeldeinformationen. Bei keiner der Autorisierungsmethoden müssen Sie Passwörter in den API-Aufrufen übergeben. Weitere Informationen zu AWS Secrets Manager finden Sie unter Was ist AWS Secrets Manager? im AWS Secrets Manager-Benutzerhandbuch.

Weitere Informationen zu den Data-API-Vorgängen finden Sie in der Amazon-Redshift-Data-API-Referenz.

Arbeiten mit der Amazon Redshift Data API

Bevor Sie die Amazon Redshift Data API verwenden, überprüfen Sie die folgenden Schritte:

  1. Ermitteln Sie, ob Sie als Aufrufer der Data API autorisiert sind. Weitere Informationen zur -Autorisierung finden Sie unter Autorisieren des Zugriffs auf die Amazon Redshift Data API.

  2. Ermitteln Sie, ob Sie planen, die Data API mit Authentifizierungsanmeldeinformationen von Secrets Manager oder temporären Anmeldeinformationen aufzurufen. Weitere Informationen finden Sie unter Auswählen der Authentifizierungs-Anmeldeinformationen beim Aufrufen der Amazon Redshift Data API.

  3. Richten Sie ein Secret ein, wenn Sie Secrets Manager für die Authentifizierungsanmeldedaten verwenden. Weitere Informationen finden Sie unter Speichern von Datenbankanmeldeinformationen in AWS Secrets Manager.

  4. Beachten Sie die Punkte und Einschränkungen, die beim Aufrufen der Data API zu berücksichtigen sind. Weitere Informationen finden Sie unter Wichtige Punkte beim Aufrufen der Amazon Redshift Data API.

  5. Rufen Sie die Data API über die AWS Command Line Interface (AWS CLI), aus Ihrem eigenen Code oder mithilfe des Abfrage-Editors in der Amazon-Redshift-Konsole auf. Beispiele für den Aufruf über die AWS CLI finden Sie unter Aufrufen der Daten-API über die AWS CLI.

Autorisieren des Zugriffs auf die Amazon Redshift Data API

Ein Benutzer muss zum Zugriff auf die Data API autorisiert sein. Sie können einen Benutzer zum Zugriff auf die Data API autorisieren, indem Sie dem betreffenden Benutzer eine verwaltete Richtlinie, eine vordefinierte AWS Identity and Access Management (IAM)-Richtlinie, hinzufügen. Informationen zu den Berechtigungen, die von verwalteten Richtlinien zugelassen und verweigert werden, finden Sie in der IAM-Konsole (https://console.aws.amazon.com/iam/).

Amazon Redshift stellt die von AmazonRedshiftDataFullAccess verwaltete Richtlinie bereit. Diese Richtlinie bietet vollständigen Zugriff auf die Amazon-Redshift-Data-API-Vorgänge. Diese Richtlinie ermöglicht auch definierten Zugriff auf bestimmte Amazon-Redshift-,AWS Secrets Manager- und IAM-API-Vorgänge, die für die Authentifizierung und den Zugriff auf einen Amazon-Redshift-Cluster erforderlich sind. Wenn Sie zur Authentifizierung AWS Secrets Manager verwenden, erlaubt die Richtlinie die Verwendung der secretsmanager:GetSecretValue-Aktion, um das mit dem Schlüssel RedshiftDataFullAccess markierte Secret abzurufen. Wenn Sie temporäre Anmeldeinformationen für die Authentifizierung verwenden, erlaubt die Richtlinie die Verwendung der redshift:GetClusterCredentials-Aktion für den Datenbankbenutzernamen redshift_data_api_user für jede Datenbank im Cluster. Dieser Benutzername muss bereits in Ihrer Datenbank erstellt worden sein.

Sie können auch eine eigene IAM-Richtlinie erstellen, die den Zugriff auf bestimmte Ressourcen ermöglicht. Um Ihre Richtlinie zu erstellen, verwenden Sie die AmazonRedshiftDataFullAccess-Richtlinie als Ausgangspunkt. Nach dem Erstellen Ihrer Richtlinie können Sie diese jedem Benutzer hinzufügen, der Zugriff auf die Data API benötigt.

Um eine Abfrage in einem Cluster auszuführen, der einem anderen Konto gehört, muss das besitzende Konto eine IAM-Rolle bereitstellen, die die Data API im aufrufenden Konto übernehmen kann. Angenommen, Konto B besitzt einen Cluster, auf den Konto A zugreifen muss. Konto B kann der IAM-Rolle von Konto B die von AWS verwaltete Richtlinie AmazonRedshiftDataFullAccess zuweisen. Dann vertraut Konto B Konto A mit einer Vertrauensrichtlinie wie der folgenden:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::accountID-of-account-A:role/someRoleA" ] }, "Action": "sts:AssumeRole" } ] }

Schließlich muss die IAM-Rolle von Konto A die IAM-Rolle von Konto B übernehmen können.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::accountID-of-account-B:role/someRoleB" } }

Die folgenden Links bieten weitere Informationen über AWS Identity and Access Management im IAM-Benutzerhandbuch.

Speichern von Datenbankanmeldeinformationen in AWS Secrets Manager

Wenn Sie die Data API aufrufen, können Sie die Anmeldeinformationen für den Cluster unter Verwendung eines Secrets in AWS Secrets Manager übergeben. Zum Übermitteln der Anmeldeinformationen auf diese Weise geben Sie den Namen des Secrets oder den Amazon-Ressourcenname (ARN) des Secrets an.

Um Anmeldeinformationen mit Secrets Manager zu speichern, benötigen Sie eine von SecretManagerReadWrite verwaltete Richtlinienberechtigung. Weitere Informationen zu den Mindestberechtigungen finden Sie unter Erstellen und Verwalten von Secrets mit AWS Secrets Manager im AWS Secrets Manager-Benutzerhandbuch.

So speichern Sie Ihre Anmeldeinformationen in einem Secret für einen Amazon-Redshift-Cluster

  1. Sie können mit AWS Secrets Manager ein Secret erstellen, das Anmeldeinformationen für Ihren Cluster enthält:

    • Wenn Sie Store a new secret (Neues Secret speichern) auswählen, wählen Sie Credentials for Redshift cluster (Anmeldedaten für Redshift-Cluster) aus.

    • Speichern Sie Ihre Werte für User name (Benutzername) (Datenbankbenutzer),Password (Passwort) und DB cluster (DB-Cluster) (Cluster-ID) in Ihrem Secret.

    • Markieren Sie das Secret mit dem Schlüssel RedshiftDataFullAccess. Die von AWS verwaltete Richtlinie AmazonRedshiftDataFullAccess erlaubt nur die Aktion secretsmanager:GetSecretValue für Secrets, die mit dem Schlüssel RedshiftDataFullAccess markiert sind.

    Anweisungen finden Sie unter Erstellen eines Basis-Secrets im AWS Secrets Manager-Benutzerhandbuch.

  2. Sie können die Details des von Ihnen erstellten geheimen Schlüssel über die AWS Secrets Manager-Konsole oder den aws secretsmanager describe-secret-Befehl AWS CLI anzeigen.

    Notieren Sie sich den Namen und den ARN des Secrets. Sie können diese in Aufrufen an die Data API verwenden.

Erstellen eines Amazon-VPC-Endpunkts ( AWS PrivateLink ) für die Data API

Amazon Virtual Private Cloud (Amazon VPC) ermöglicht Ihnen das Starten von AWS-Ressourcen, wie Amazon-Redshift-Clustern und Anwendungen, in einer Virtual Private Cloud (VPC). AWS PrivateLink stellt im Amazon-Netzwerk eine sichere, private Konnektivität zwischen Virtual Private Clouds (VPCs) und AWS-Services bereit. Mit AWS PrivateLink können Sie VPC-Endpunkte erstellen, mit denen Sie eine Verbindung zu Services über verschiedene Konten und VPCs basierend auf Amazon VPC herstellen können. Weitere Informationen über AWS PrivateLink finden Sie unter VPC-Endpunktservices ( AWS PrivateLink ) im Amazon-Virtual-Private-Cloud-Benutzerhandbuch.

Sie können die Daten-API mit Amazon VPC-Endpunkten aufrufen. Die Verwendung eines Amazon-VPC-Endpunkts hält den Datenverkehr zwischen Anwendungen in Ihrer Amazon VPC und der Data API im AWS-Netzwerk aufrecht, ohne öffentliche IP-Adressen zu verwenden. Amazon-VPC-Endpunkte können Ihnen dabei helfen, Compliance- und behördliche Anforderungen im Zusammenhang mit der Einschränkung der öffentlichen Internetkonnektivität zu erfüllen. Wenn Sie beispielsweise einen Amazon VPC-Endpunkt verwenden, können Sie den Datenverkehr zwischen einer Anwendung, die auf einer Amazon EC2-Instance ausgeführt wird, und der Daten-API in den VPCs, die diese enthalten, beibehalten.

Nachdem Sie den Amazon VPC-Endpunkt erstellt haben, können Sie ihn verwenden, ohne Code- oder Konfigurationsänderungen in der Anwendung vorzunehmen.

So erstellen Sie einen Amazon VPC-Endpunkt für die Daten-API

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-VPC-Konsole unter https://console.aws.amazon.com/vpc/.

  2. Wählen Sie Endpunkte und dann Endpunkt erstellen aus.

  3. Wählen Sie auf der Seite Create Endpoint (Endpunkt erstellen) für Service category (Servicekategorie) die Option AWS-Services aus. Wählen Sie bei Service Name redshift-data (com.amazonaws.region.redshift-data) aus.

  4. Wählen Sie für VPC die VPC aus, in der der Endpunkt erstellt werden soll.

    Wählen Sie die VPC aus, die die Anwendung enthält, die Daten-API-Aufrufe ausführt.

  5. Wählen Sie für Subnetze das Subnetz für jede Availability Zone (AZ) aus, die vom AWS-Service verwendet wird, auf dem Ihre Anwendung ausgeführt wird.

    Um einen Amazon-VPC-Endpunkt zu erstellen, geben Sie den privaten IP-Adressbereich an, in dem der Endpunkt zugänglich ist. Wählen Sie dazu das Subnetz für jede Availability Zone aus. Dadurch wird der VPC-Endpunkt auf den privaten IP-Adressbereich beschränkt, der für jede Availability Zone spezifisch ist. Außerdem wird in jeder Availability Zone ein Amazon VPC-Endpunkt erstellt.

  6. Wählen Sie für DNS-Namen aktivieren die Option Für diesen Endpunkt aktivieren aus.

    Private DNS löst den standardmäßigen DNS-Hostnamen der Daten-API (https://redshift-data.region.amazonaws.com) in die privaten IP-Adressen auf, die mit dem für Ihren Amazon VPC-Endpunkt spezifischen DNS-Hostnamen verknüpft sind. Daher können Sie mit der AWS CLI oder den AWS SDKs auf den VPC-Endpunkt der Daten-API zugreifen, ohne Code- oder Konfigurationsänderungen zum Aktualisieren der Daten-API-Endpunkt-URL vorzunehmen.

  7. Wählen Sie für Sicherheitsgruppe eine Sicherheitsgruppe aus, die dem Amazon VPC-Endpunkt zugeordnet werden soll.

    Wählen Sie die Sicherheitsgruppe aus, die den Zugriff auf den AWS-Service ermöglicht, auf dem Ihre Anwendung ausgeführt wird. Wenn beispielsweise eine Amazon EC2-Instance Ihre Anwendung ausführt, wählen Sie die Sicherheitsgruppe aus, die den Zugriff auf die Amazon EC2-Instance ermöglicht. Mit der Sicherheitsgruppe können Sie den Datenverkehr zum Amazon VPC-Endpunkt von Ressourcen in Ihrer VPC steuern.

  8. Wählen Sie Create endpoint.

Nachdem der Endpunkt erstellt wurde, wählen Sie den Link in der AWS Management Console aus, um die Endpunktdetails anzuzeigen.

Auf der Registerkarte Details des Endpunkts werden die DNS-Hostnamen angezeigt, die beim Erstellen des Amazon VPC-Endpunkts generiert wurden.

Sie können den Standardendpunkt (redshift-data.region.amazonaws.com) oder einen der VPC-spezifischen Endpunkte verwenden, um die Daten-API innerhalb der Amazon VPC aufzurufen. Der standardmäßige Daten-API-Endpunkt leitet automatisch an den Amazon VPC-Endpunkt weiter. Dieses Routing tritt auf, weil der private DNS-Hostname beim Erstellen des Amazon VPC-Endpunkts aktiviert wurde.

Wenn Sie einen Amazon VPC-Endpunkt in einem Daten-API-Aufruf verwenden, verbleibt der gesamte Datenverkehr zwischen Ihrer Anwendung und der Daten-API in den Amazon VPCs, die sie enthalten. Sie können einen Amazon VPC-Endpunkt für jeden Typ von Daten-API-Aufruf verwenden. Informationen zum Aufrufen der Daten-API finden Sie unter Wichtige Punkte beim Aufrufen der Amazon Redshift Data API.

Wichtige Punkte beim Aufrufen der Amazon Redshift Data API

Beachten Sie Folgendes, wenn Sie die Data API aufrufen:

  • Die maximale Dauer einer Abfrage beträgt 24 Stunden.

  • Die maximale Anzahl aktiver Abfragen (STARTED- undSUBMITTED-Abfragen) pro Amazon-Redshift-Cluster beträgt 200.

  • Die maximale Abfrageergebnisgröße beträgt 100 MB. Wenn ein Aufruf mehr als 100 MB an Antwortdaten zurückgibt, wird der Aufruf beendet.

  • Die maximale Aufbewahrungszeit für Abfrageergebnisse beträgt 24 Stunden.

  • Die maximale Größe von Abfrageanweisungen beträgt 100 KB.

  • Die Data API ist für die Abfrage von Clustern mit einem Knoten und mehreren Knoten der folgenden Knotentypen verfügbar:

    • dc2.large

    • dc2.8xlarge

    • ds2.xlarge

    • ds2.8xlarge

    • ra3.xlplus

    • ra3.4xlarge

    • ra3.16xlarge

  • Der Cluster muss sich in einer auf dem Amazon-VPC-Service basierenden Virtual Private Cloud (VPC) befinden.

  • Standardmäßig können Benutzer mit derselben IAM-Rolle oder IAM-Benutzer wie der Ausführer eines ExecuteStatement- oder BatchExecuteStatement-API-Vorgangs auf dieselbe Anweisung mit CancelStatement-, DescribeStatement-, GetStatementResult- und ListStatements-API-Vorgängen reagieren.

  • Eine Liste der AWS-Regionen, in denen die Data API verfügbar ist, finden Sie unter Redshift-Data-API-Endpunkte in der Allgemeinen Amazon-Web-Services-Referenz.

Auswählen der Authentifizierungs-Anmeldeinformationen beim Aufrufen der Amazon Redshift Data API

Wenn Sie die Data API aufrufen, verwenden Sie eine der folgenden Authentifizierungsmethoden für einige API-Vorgänge. Jede Methode erfordert eine andere Kombination von Parametern.

AWS Secrets Manager

Geben Sie bei dieser Methode den Secret-Wert secret-arn an, der in AWS Secrets Manager gespeichert ist. Das angegebene Secret enthält Anmeldeinformationen zum Verbinden mit Ihrer Datenbank. Sie geben auch einen Wert für cluster-identifier an, der mit der Cluster-ID im Secret übereinstimmt.

Temporäre Anmeldeinformationen

Geben Sie bei dieser Methode Ihre Werte für cluster-identifier, database und db-user an.

Mit jeder der Methoden können Sie auch einen region-Wert bereitstellen, der die AWS-Region angibt, in der sich Ihr Cluster befindet.

Zuordnen von JDBC-Datentypen beim Aufrufen der Amazon Redshift Data API

In der folgenden Tabelle sind den Datentypen, die Sie in Daten-API-Aufrufen angeben, JDBC-Datentypen (Java Database Connectivity) zugeordnet.

JDBC-Datentyp

Daten-API-Datentyp

INTEGER, TINYINT, SMALLINT, BIGINT

LONG

FLOAT, REAL, DOUBLE

DOUBLE

DECIMAL

STRING

BOOLEAN, BIT

BOOLEAN

BLOB, BINARY, LONGVARBINARY, VARBINARY

BLOB

CLOB

STRING

Andere Typen (einschließlich datums- und zeitbezogener Typen)

STRING

Zeichenfolgenwerte werden an die Amazon-Redshift-Datenbank übergeben und implizit in einen Datenbankdatentyp umgewandelt.

Anmerkung

Derzeit unterstützt die Data API keine Arrays von Universal Unique Identifiers (UUIDs).

Ausführen von SQL-Anweisungen mit Parametern beim Aufrufen der Amazon Redshift Data API

Sie können den an die Datenbank-Engine übermittelten SQL-Text kontrollieren, indem Sie den Data-API-Vorgang mithilfe von Parametern für Teile der SQL-Anweisung aufrufen. Benannte Parameter bieten eine flexible Möglichkeit, Parameter zu übergeben, ohne sie im SQL-Text hart zu codieren. Sie helfen Ihnen, SQL-Text wiederzuverwenden und SQL-Injections-Probleme zu vermeiden.

Im folgenden Beispiel sehen Sie die benannten Parameter eines parameters-Felds eines execute statement-AWS CLI-Befehls.

--parameters "[{\"name\": \"id\", \"value\": \"1\"},{\"name\": \"address\", \"value\": \"Seattle\"}]"

Beachten Sie Folgendes, wenn Sie benannte Parameter verwenden:

  • Die benannten Parameter können in beliebiger Reihenfolge vorliegen und Parameter können mehrmals im SQL-Text verwendet werden. Die im vorherigen Beispiel gezeigte Parameteroption, die Werte 1 und Seattle werden in die Tabellenspalten id und address eingefügt. Im SQL-Text geben Sie die benannten Parameter wie folgt an:

    --sql "insert into mytable values (:id, :address)"
  • Wenn die SQL-Anweisung ausgeführt wird, werden Daten implizit in einen Datentyp umgewandelt. Weitere Informationen zur Datentypumwandlung finden Sie unter Datentypen im Datenbankentwicklerhandbuch zu Amazon Redshift.

  • Sie können einen Wert nicht auf NULL setzen. Die Data API interpretiert ihn als Literalzeichenfolge NULL. Im folgenden Beispiel wird id durch die Literalzeichenfolge null ersetzt, nicht durch den SQL-NULL-Wert.

    --parameters "[{\"name\": \"id\", \"value\": \"null\"}]"
  • Sie können keinen Wert mit Länge null festlegen. Die SQL-Anweisung der Data API schlägt fehl. Im folgenden Beispiel wird versucht, id mit einem Wert der Länge null festzulegen, was zum Fehlschlagen der SQL-Anweisung führt.

    --parameters "[{\"name\": \"id\", \"value\": \"\"}]"
  • Sie können einen Tabellennamen in der SQL-Anweisung nicht mit einem Parameter festlegen. Die Data API folgt der Regel des JDBC-PreparedStatement.

  • Die Ausgabe des describe statement-Vorgangs gibt die Abfrageparameter einer SQL-Anweisung zurück.

  • Nur der execute-statement-Vorgang unterstützt SQL-Anweisungen mit Parametern.

Aufrufen der Daten-API

Sie können die Data API oder die AWS CLI aufrufen, um SQL-Anweisungen auf Ihrem Cluster auszuführen. Der primäre Vorgang zum Ausführen einer SQL-Anweisung ist ExecuteStatement. Die Data API unterstützt die vom AWS-SDK unterstützten Programmiersprachen. Weitere Informationen finden Sie unter Tools für AWS.

Aufrufen der Daten-API über die AWS CLI

Sie können die Daten-API über die aufrufe AWS CLI.

In den folgenden Beispielen wird die AWS CLI zum Aufrufen der Data API verwendet. Um die Beispiele auszuführen, bearbeiten Sie die Parameterwerte entsprechend Ihrer Umgebung. Diese Beispiele veranschaulichen einige der Data-API-Vorgänge. Weitere Informationen finden Sie in der AWS CLI-Befehlsreferenz.

Die Befehle in den folgenden Beispielen wurden zur besseren Lesbarkeit aufgeteilt und formatiert.

So führen Sie eine SQL-Anweisung aus

Um eine SQL-Anweisung auszuführen, verwenden Sie den aws redshift-data execute-statement-AWS CLI-Befehl.

Mit folgendem AWS CLI-Befehl wird eine SQL-Anweisung ausgeführt und eine Kennung zum Abrufen der Ergebnisse zurückgegeben. In diesem Beispiel wird die AWS Secrets Manager-Authentifizierungsmethode verwendet.

aws redshift-data execute-statement --region us-west-2 --secret arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn --cluster-identifier mycluster-test --sql "select * from stl_query limit 1" --database dev

Im Folgenden sehen Sie ein Beispiel für die Antwort.

{ "ClusterIdentifier": "mycluster-test", "CreatedAt": 1598323175.823, "Database": "dev", "Id": "c016234e-5c6c-4bc5-bb16-2c5b8ff61814", "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:yanruiz-secret-hKgPWn" }

Mit folgendem AWS CLI-Befehl wird eine SQL-Anweisung ausgeführt und eine Kennung zum Abrufen der Ergebnisse zurückgegeben. In diesem Beispiel wird die Authentifizierungsmethode mit temporären Anmeldeinformationen verwendet.

aws redshift-data execute-statement --region us-west-2 --db-user myuser --cluster-identifier mycluster-test --database dev --sql "select * from stl_query limit 1"

Im Folgenden sehen Sie ein Beispiel für die Antwort.

{ "ClusterIdentifier": "mycluster-test", "CreatedAt": 1598306924.632, "Database": "dev", "DbUser": "myuser", "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766" }

So führen Sie eine SQL-Anweisung mit Parametern aus

Um eine SQL-Anweisung auszuführen, verwenden Sie den aws redshift-data execute-statement-AWS CLI-Befehl.

Mit folgendem AWS CLI-Befehl wird eine SQL-Anweisung ausgeführt und eine Kennung zum Abrufen der Ergebnisse zurückgegeben. In diesem Beispiel wird die AWS Secrets Manager-Authentifizierungsmethode verwendet. Der SQL-Text weist die benannten Parameter colname und distance auf. In diesem Fall lautet der Spaltenname in der Tabelle ratecode und der im Prädikat verwendete Abstand ist 5. Die Werte für benannte Parameter für die SQL-Anweisung werden in der Option parameters angegeben.

aws redshift-data execute-statement --region us-west-2 --secret arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn --cluster-identifier mycluster-test --sql "SELECT :colname, COUNT(*) FROM demo_table WHERE trip_distance > :distance" --parameters "[{\"name\": \"colname\", \"value\": \"ratecode\"}, \ {\"name\": \"distance\", \"value\": \"5\"}]" --database dev

Im Folgenden sehen Sie ein Beispiel für die Antwort.

{ "ClusterIdentifier": "mycluster-test", "CreatedAt": 1598323175.823, "Database": "dev", "Id": "c016234e-5c6c-4bc5-bb16-2c5b8ff61814", "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:yanruiz-secret-hKgPWn" }

Im folgenden Beispiel wird die EVENT-Tabelle aus der Beispieldatenbank verwendet. Weitere Informationen finden Sie unter EVENT-Tabelle im Datenbankentwicklerhandbuch zu Amazon Redshift.

Wenn Ihre Datenbank noch nicht die EVENT-Tabelle enthält, können Sie mit der Data API eine wie folgt erstellen:

aws redshift-data execute-statement --database dev --cluster-id my-test-cluster --db-user awsuser --sql "create table event( eventid integer not null distkey, venueid smallint not null, catid smallint not null, dateid smallint not null sortkey, eventname varchar(200), starttime timestamp)"

Mit dem folgenden Befehl wird eine Zeile in der EVENT-Tabelle eingefügt.

aws redshift-data execute-statement --database dev --cluster-id my-test-cluster --db-user awsuser --sql "insert into event values(:eventid, :venueid::smallint, :catid, :dateid, :eventname, :starttime)" --parameters "[{\"name\": \"eventid\", \"value\": \"1\"}, {\"name\": \"venueid\", \"value\": \"1\"}, {\"name\": \"catid\", \"value\": \"1\"}, {\"name\": \"dateid\", \"value\": \"1\"}, {\"name\": \"eventname\", \"value\": \"event 1\"}, {\"name\": \"starttime\", \"value\": \"2022-02-22\"}]"

Mit dem folgenden Befehl wird eine zweite Zeile in der EVENT-Tabelle eingefügt. In diesem Beispiel werden die folgenden Aufgaben durchgeführt:

  • Der Parameter namens id wird viermal im SQL-Text verwendet.

  • Implizite Typumwandlung wird automatisch angewendet, wenn der Parameter starttime eingefügt wird.

  • Für die Spalte venueid wird die Typumwandlung in den SMALLINT-Datentyp durchgeführt.

  • Zeichenfolgen, die den Datentyp DATE darstellen, werden implizit in den Datentyp TIMESTAMP konvertiert.

  • Kommentare können in SQL-Text verwendet werden.

aws redshift-data execute-statement --database dev --cluster-id my-test-cluster --db-user awsuser --sql "insert into event values(:id, :id::smallint, :id, :id, :eventname, :starttime) /*this is comment, and it won't apply parameterization for :id, :eventname or :starttime here*/" --parameters "[{\"name\": \"eventname\", \"value\": \"event 2\"}, {\"name\": \"starttime\", \"value\": \"2022-02-22\"}, {\"name\": \"id\", \"value\": \"2\"}]"

Hier sehen Sie die beiden eingefügten Zeilen:

eventid | venueid | catid | dateid | eventname | starttime ---------+---------+-------+--------+-----------+--------------------- 1 | 1 | 1 | 1 | event 1 | 2022-02-22 00:00:00 2 | 2 | 2 | 2 | event 2 | 2022-02-22 00:00:00

Der folgende Befehl verwendet einen benannten Parameter in einer WHERE-Klausel, um die Zeile abzurufen, in der eventid 1 ist.

aws redshift-data execute-statement --database dev --cluster-id my-test-cluster --db-user awsuser --sql "select * from event where eventid=:id" --parameters "[{\"name\": \"id\", \"value\": \"1\"}]"

Führen Sie den folgenden Befehl aus, um die SQL-Ergebnisse der vorherigen SQL-Anweisung abzurufen:

aws redshift-data get-statement-result --id 7529ad05-b905-4d71-9ec6-8b333836eb5a

Bietet folgende Ergebnisse:

{ "Records": [ [ { "longValue": 1 }, { "longValue": 1 }, { "longValue": 1 }, { "longValue": 1 }, { "stringValue": "event 1" }, { "stringValue": "2022-02-22 00:00:00.0" } ] ], "ColumnMetadata": [ { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "eventid", "length": 0, "name": "eventid", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "public", "tableName": "event", "typeName": "int4" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "venueid", "length": 0, "name": "venueid", "nullable": 0, "precision": 5, "scale": 0, "schemaName": "public", "tableName": "event", "typeName": "int2" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "catid", "length": 0, "name": "catid", "nullable": 0, "precision": 5, "scale": 0, "schemaName": "public", "tableName": "event", "typeName": "int2" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "dateid", "length": 0, "name": "dateid", "nullable": 0, "precision": 5, "scale": 0, "schemaName": "public", "tableName": "event", "typeName": "int2" }, { "isCaseSensitive": true, "isCurrency": false, "isSigned": false, "label": "eventname", "length": 0, "name": "eventname", "nullable": 1, "precision": 200, "scale": 0, "schemaName": "public", "tableName": "event", "typeName": "varchar" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "label": "starttime", "length": 0, "name": "starttime", "nullable": 1, "precision": 29, "scale": 6, "schemaName": "public", "tableName": "event", "typeName": "timestamp" } ], "TotalNumRows": 1 }

So führen Sie mehrere SQL-Anweisungen aus

Um mehrere SQL-Anweisungen mit einem Befehl auszuführen, verwenden Sie den aws redshift-data batch-execute-statement-AWS CLI-Befehl.

Mit folgendem AWS CLI-Befehl werden drei SQL-Anweisungen ausgeführt und eine Kennung zum Abrufen der Ergebnisse zurückgegeben. In diesem Beispiel wird die Authentifizierungsmethode mit temporären Anmeldeinformationen verwendet.

aws redshift-data batch-execute-statement --region us-west-2 --db-user myuser --cluster-identifier mycluster-test --database dev --sqls "set timezone to BST" "select * from mytable" "select * from another_table"

Im Folgenden sehen Sie ein Beispiel für die Antwort.

{ "ClusterIdentifier": "mycluster-test", "CreatedAt": 1598306924.632, "Database": "dev", "DbUser": "myuser", "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766" }

So listen Sie Metadaten über SQL-Anweisungen auf

Um Metadaten über SQL-Anweisungen aufzulisten, verwenden Sie den aws redshift-data list-statements-AWS CLI-Befehl. Die Autorisierung zum Ausführen dieses Befehls basiert auf den IAM-Berechtigungen des Aufrufers.

Der folgende AWS CLI-Befehl listet SQL-Anweisungen auf, die ausgeführt wurden.

aws redshift-data list-statements --region us-west-2 --status ALL

Im Folgenden sehen Sie ein Beispiel für die Antwort.

{ "Statements": [ { "CreatedAt": 1598306924.632, "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766", "QueryString": "select * from stl_query limit 1", "Status": "FINISHED", "UpdatedAt": 1598306926.667 }, { "CreatedAt": 1598311717.437, "Id": "e0ebd578-58b3-46cc-8e52-8163fd7e01aa", "QueryString": "select * from stl_query limit 1", "Status": "FAILED", "UpdatedAt": 1598311719.008 }, { "CreatedAt": 1598313683.65, "Id": "c361d4f7-8c53-4343-8c45-6b2b1166330c", "QueryString": "select * from stl_query limit 1", "Status": "ABORTED", "UpdatedAt": 1598313685.495 }, { "CreatedAt": 1598306653.333, "Id": "a512b7bd-98c7-45d5-985b-a715f3cfde7f", "QueryString": "select 1", "Status": "FINISHED", "UpdatedAt": 1598306653.992 } ] }

So beschreiben Sie Metadaten über eine SQL-Anweisung

Um Beschreibungen von Metadaten für eine SQL-Anweisung abzurufen, verwenden Sie den aws redshift-data describe-statement-AWS CLI-Befehl. Die Autorisierung zum Ausführen dieses Befehls basiert auf den IAM-Berechtigungen des Aufrufers.

Der folgende AWS CLI-Befehl beschreibt eine SQL-Anweisung.

aws redshift-data describe-statement --id d9b6c0c9-0747-4bf4-b142-e8883122f766 --region us-west-2

Im Folgenden sehen Sie ein Beispiel für die Antwort.

{ "ClusterIdentifier": "mycluster-test", "CreatedAt": 1598306924.632, "Duration": 1095981511, "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766", "QueryString": "select * from stl_query limit 1", "RedshiftPid": 20859, "RedshiftQueryId": 48879, "ResultRows": 1, "ResultSize": 4489, "Status": "FINISHED", "UpdatedAt": 1598306926.667 }

Es folgt ein Beispiel für eine describe-statement-Antwort nach dem Ausführen eines batch-execute-statement-Befehls mit mehreren SQL-Anweisungen.

{ "ClusterIdentifier": "mayo", "CreatedAt": 1623979777.126, "Duration": 6591877, "HasResultSet": true, "Id": "b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652", "RedshiftPid": 31459, "RedshiftQueryId": 0, "ResultRows": 2, "ResultSize": 22, "Status": "FINISHED", "SubStatements": [ { "CreatedAt": 1623979777.274, "Duration": 3396637, "HasResultSet": true, "Id": "b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652:1", "QueryString": "select 1;", "RedshiftQueryId": -1, "ResultRows": 1, "ResultSize": 11, "Status": "FINISHED", "UpdatedAt": 1623979777.903 }, { "CreatedAt": 1623979777.274, "Duration": 3195240, "HasResultSet": true, "Id": "b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652:2", "QueryString": "select 2;", "RedshiftQueryId": -1, "ResultRows": 1, "ResultSize": 11, "Status": "FINISHED", "UpdatedAt": 1623979778.076 } ], "UpdatedAt": 1623979778.183 }

So rufen Sie die Ergebnisse einer SQL-Anweisung ab

Um das Ergebnis einer ausgeführten SQL-Anweisung abzurufen, verwenden Sie den redshift-data get-statement-result-AWS CLI-Befehl. Sie können eine Id angeben, die Sie als Antwort auf execute-statement oder batch-execute-statement erhalten. Der Id-Wert für eine SQL-Anweisung, die von batch-execute-statement ausgeführt wurde, kann im Ergebnis von describe-statement abgerufen werden und erhält einen Doppelpunkt und eine Sequenznummer wie b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652:2 als Suffix. Wenn Sie mehrere SQL-Anweisungen mit batch-execute-statement ausführen, hat jede SQL-Anweisung einen Id-Wert wie in describe-statement gezeigt. Die Autorisierung zum Ausführen dieses Befehls basiert auf den IAM-Berechtigungen des Aufrufers.

Die folgende Anweisung gibt das Ergebnis einer SQL-Anweisung zurück, die von execute-statement ausgeführt wurde.

aws redshift-data get-statement-result --id d9b6c0c9-0747-4bf4-b142-e8883122f766 --region us-west-2

Die folgende Anweisung gibt das Ergebnis einer zweiten SQL-Anweisung zurück, die von batch-execute-statement ausgeführt wurde.

aws redshift-data get-statement-result --id b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652:2 --region us-west-2

Das folgende Beispiel ist eine Antwort auf einen get-statement-result-Aufruf.

{ "ColumnMetadata": [ { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "userid", "length": 0, "name": "userid", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "query", "length": 0, "name": "query", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": true, "isCurrency": false, "isSigned": false, "label": "label", "length": 0, "name": "label", "nullable": 0, "precision": 320, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "bpchar" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "xid", "length": 0, "name": "xid", "nullable": 0, "precision": 19, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int8" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "pid", "length": 0, "name": "pid", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": true, "isCurrency": false, "isSigned": false, "label": "database", "length": 0, "name": "database", "nullable": 0, "precision": 32, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "bpchar" }, { "isCaseSensitive": true, "isCurrency": false, "isSigned": false, "label": "querytxt", "length": 0, "name": "querytxt", "nullable": 0, "precision": 4000, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "bpchar" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "label": "starttime", "length": 0, "name": "starttime", "nullable": 0, "precision": 29, "scale": 6, "schemaName": "", "tableName": "stll_query", "typeName": "timestamp" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "label": "endtime", "length": 0, "name": "endtime", "nullable": 0, "precision": 29, "scale": 6, "schemaName": "", "tableName": "stll_query", "type": 93, "typeName": "timestamp" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "aborted", "length": 0, "name": "aborted", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "insert_pristine", "length": 0, "name": "insert_pristine", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "concurrency_scaling_status", "length": 0, "name": "concurrency_scaling_status", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" } ], "Records": [ [ { "longValue": 1 }, { "longValue": 3 }, { "stringValue": "health" }, { "longValue": 1023 }, { "longValue": 15279 }, { "stringValue": "dev" }, { "stringValue": "select system_status from stv_gui_status;" }, { "stringValue": "2020-08-21 17:33:51.88712" }, { "stringValue": "2020-08-21 17:33:52.974306" }, { "longValue": 0 }, { "longValue": 0 }, { "longValue": 6 } ] ], "TotalNumRows": 1 }

So beschreiben Sie eine Tabelle

Um Metadaten abzurufen, die eine Tabelle beschreiben, verwenden Sie den aws redshift-data describe-table-AWS CLI-Befehl.

Der folgende AWS CLI-Befehl führt eine SQL-Anweisung aus und gibt Metadaten zurück, die eine Tabelle beschreiben. In diesem Beispiel wird die AWS Secrets Manager-Authentifizierungsmethode verwendet.

aws redshift-data describe-table --region us-west-2 --cluster-identifier mycluster-test --database dev --schema information_schema --table sql_features --secret arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn

Im Folgenden sehen Sie ein Beispiel für die Antwort.

{ "ColumnList": [ { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "feature_id", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "feature_name", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" } ] }

Der folgende AWS CLI-Befehl führt eine SQL-Anweisung aus, die eine Tabelle beschreibt. In diesem Beispiel wird die Authentifizierungsmethode mit temporären Anmeldeinformationen verwendet.

aws redshift-data describe-table --region us-west-2 --db-user myuser --cluster-identifier mycluster-test --database dev --schema information_schema --table sql_features

Im Folgenden sehen Sie ein Beispiel für die Antwort.

{ "ColumnList": [ { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "feature_id", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "feature_name", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "sub_feature_id", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "sub_feature_name", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "is_supported", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "is_verified_by", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "length": 2147483647, "name": "comments", "nullable": 1, "precision": 2147483647, "scale": 0, "schemaName": "information_schema", "tableName": "sql_features", "typeName": "character_data" } ] }

So listen Sie die Datenbanken in einem Cluster auf

Um die Datenbanken in einem Cluster aufzulisten, verwenden Sie den aws redshift-data list-databases-AWS CLI-Befehl.

Folgender AWS CLI-Befehl führt eine SQL-Anweisung zum Auflisten von Datenbanken aus. In diesem Beispiel wird die AWS Secrets Manager-Authentifizierungsmethode verwendet.

aws redshift-data list-databases --region us-west-2 --secret arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn --cluster-identifier mycluster-test --database dev

Im Folgenden sehen Sie ein Beispiel für die Antwort.

{ "Databases": [ "dev" ] }

Folgender AWS CLI-Befehl führt eine SQL-Anweisung zum Auflisten von Datenbanken aus. In diesem Beispiel wird die Authentifizierungsmethode mit temporären Anmeldeinformationen verwendet.

aws redshift-data list-databases --region us-west-2 --db-user myuser --cluster-identifier mycluster-test --database dev

Im Folgenden sehen Sie ein Beispiel für die Antwort.

{ "Databases": [ "dev" ] }

So listen Sie die Schemata in einer Datenbank auf

Um die Schemata in einer Datenbank aufzulisten, verwenden Sie den aws redshift-data list-schemas-AWS CLI-Befehl.

Folgender AWS CLI-Befehl führt eine SQL-Anweisung zum Auflisten von Schemata in einer Datenbank aus. In diesem Beispiel wird die AWS Secrets Manager-Authentifizierungsmethode verwendet.

aws redshift-data list-schemas --region us-west-2 --secret arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn --cluster-identifier mycluster-test --database dev

Im Folgenden sehen Sie ein Beispiel für die Antwort.

{ "Schemas": [ "information_schema", "pg_catalog", "pg_internal", "public" ] }

Folgender AWS CLI-Befehl führt eine SQL-Anweisung zum Auflisten von Schemata in einer Datenbank aus. In diesem Beispiel wird die Authentifizierungsmethode mit temporären Anmeldeinformationen verwendet.

aws redshift-data list-schemas --region us-west-2 --db-user mysuser --cluster-identifier mycluster-test --database dev

Im Folgenden sehen Sie ein Beispiel für die Antwort.

{ "Schemas": [ "information_schema", "pg_catalog", "pg_internal", "public" ] }

So listen Sie die Tabellen in einer Datenbank auf

Um die Tabellen in einer Datenbank aufzulisten, verwenden Sie den aws redshift-data list-tables-AWS CLI-Befehl.

Folgender AWS CLI-Befehl führt eine SQL-Anweisung zum Auflisten von Tabellen in einer Datenbank aus. In diesem Beispiel wird die AWS Secrets Manager-Authentifizierungsmethode verwendet.

aws redshift-data list-tables --region us-west-2 --secret arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn --cluster-identifier mycluster-test --database dev --schema information_schema

Im Folgenden sehen Sie ein Beispiel für die Antwort.

{ "Tables": [ { "name": "sql_features", "schema": "information_schema", "type": "SYSTEM TABLE" }, { "name": "sql_implementation_info", "schema": "information_schema", "type": "SYSTEM TABLE" } }

Folgender AWS CLI-Befehl führt eine SQL-Anweisung zum Auflisten von Tabellen in einer Datenbank aus. In diesem Beispiel wird die Authentifizierungsmethode mit temporären Anmeldeinformationen verwendet.

aws redshift-data list-tables --region us-west-2 --db-user myuser --cluster-identifier mycluster-test --database dev --schema information_schema

Im Folgenden sehen Sie ein Beispiel für die Antwort.

{ "Tables": [ { "name": "sql_features", "schema": "information_schema", "type": "SYSTEM TABLE" }, { "name": "sql_implementation_info", "schema": "information_schema", "type": "SYSTEM TABLE" } ] }

Beheben von Problemen mit der Amazon Redshift Data API

Verwenden Sie die folgenden Abschnitte mit dem Titel "Allgemeine Fehlermeldungen", um Probleme zu beheben, die Sie mit der Data-API haben.

Packet for Query Is Too Large (Paket für Abfrage zu groß)

Wenn ein Fehler angezeigt wird, der angibt, dass das Paket für eine Abfrage zu groß ist, ist meist die Ergebnismenge, die für eine Zeile zurückgegeben wurde, zu groß. Die Größenbegrenzung der Data-API beträgt 64 KB pro Zeile in der von der Datenbank zurückgegebenen Ergebnismenge.

Um dieses Problem zu beheben, stellen Sie sicher, dass jede Zeile in einem Ergebnissatz höchstens 64 KB groß ist.

Database Response Exceeded Size Limit Datenbankantwort überschreitet Größenlimit)

Wenn Sie einen Fehler sehen, der darauf hinweist, dass die Datenbankantwort die Größenbeschränkung überschritten hat, war meist die von der Datenbank zurückgegebene Ergebnismenge zu groß. Das Data-API-Limit beträgt 100 MB für die von der Datenbank zurückgegebenen Ergebnismenge.

Um dieses Problem zu beheben, achten Sie darauf, dass Aufrufe der Data-API höchstens 100 MB an Daten zurückgeben. Wenn Sie mehr als 100 MB erhalten müssen, können Sie mit der LIMIT-Klausel in Ihrer Anfrage mehrere Anweisungsaufrufe ausführen.

Planen von Amazon-Redshift-Data-API-Vorgängen mit Amazon EventBridge

Mit Amazon EventBridge können Sie auf Statusänderungen in Ihren AWS-Ressourcen reagieren. Wenn sich der Status Ihrer Ressourcen ändert, werden automatisch Ereignisse in einen Ereignis-Stream übertragen. Ereignisse werden an das Konto gesendet, das die Amazon-Redshift-Datenbank enthält. Sie können Regeln für ausgewählte Ereignisse im Stream erstellen und sie an Ziele weiterleiten, um Aktionen durchzuführen. Sie können auch Regeln verwenden, um Aktionen nach einem vorher festgelegten Zeitplan durchzuführen. Weitere Informationen finden Sie im Benutzerhandbuch für Amazon EventBridge.

Um Data-API-Vorgänge mit EventBridge zu planen, muss die zugeordnete IAM-Rolle dem Prinzipal für CloudWatch Events (events.amazonaws.com) vertrauen. Dieser Rolle sollte das Äquivalent der verwalteten Richtlinie AmazonEventBridgeFullAccess zugewiesen sein. Sie sollte auch über AmazonRedshiftDataFullAccess-Richtlinienberechtigungen verfügen, die von der Data API verwaltet werden. Sie können eine IAM-Rolle mit diesen Berechtigungen in der IAM-Konsole erstellen. Wählen Sie beim Erstellen einer Rolle in der IAM-Konsole die vertrauenswürdige AWS-Service-Entität für CloudWatch Events aus. Weitere Informationen zum Erstellen einer IAM-Rolle finden Sie unter Erstellen einer Rolle für einen AWS-Service (Konsole) im IAM-Benutzerhandbuch.

Im folgenden Beispiel wird die AWS CLI verwendet, um eine EventBridge-Regel zu erstellen, die zur Ausführung einer SQL-Anweisung verwendet wird.

aws events put-rule --name test-redshift-data --schedule-expression "rate(1 minute)"

Anschließend wird ein EventBridge-Ziel erstellt, das gemäß dem in der Regel angegebenen Zeitplan ausgeführt werden soll.

aws events put-targets --cli-input-json file://data.json

Die data.json-Eingabedatei ist wie folgt.

{ "Rule": "test-redshift-data", "EventBusName": "default", "Targets": [ { "Id": "2", "Arn": "arn:aws:redshift:us-east-1:123456789012:cluster:mycluster", "RoleArn": "arn:aws:iam::123456789012:role/Administrator", "RedshiftDataParameters": { "Database": "dev", "DbUser": "root", "Sql": "select 1;", "StatementName": "test-scheduler-statement", "WithEvent": true } } ] }