Amazon Redshift unterstützt UDFs ab Patch 198 nicht mehr die Erstellung von neuem Python. Das bestehende Python UDFs wird bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im Blog-Posting
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.
Fragen Sie Amazon S3 S3-Tabellen von Amazon Redshift ab
Amazon Redshift ist in Amazon S3 S3-Tabellen-Buckets integriert, sodass Sie mit Amazon Redshift auf S3-Tabellenressourcen zugreifen können. Ganz gleich, ob Sie gerade erst anfangen oder Tausende von Tabellen in Ihrer Iceberg-Umgebung verwalten, Tabellen-Buckets vereinfachen die Verwaltung von Data Lakes in jeder Größenordnung. Weitere Informationen finden Sie unter Tabellen-Buckets.
In diesem Thema werden die ersten Schritte mit Amazon S3 Tables und Redshift sowie der Zugriff auf S3 Tables-Objekte mithilfe von Amazon Redshift beschrieben.
Voraussetzungen
Bevor Sie S3-Tabellen von Amazon Redshift abfragen, müssen Sie S3-Tabellen mit integrieren. AWS Glue Data Catalog Anweisungen finden Sie unter Integrieren von Amazon S3 S3-Tabellen mit AWS Glue Data Catalog.
Nach der Integration von S3 Tables können IAM-Prinzipale mit den erforderlichen S3-Tabellen und AWS Glue IAM-Berechtigungen S3-Tabellen über den erkennen. AWS Glue Data Catalog AWS Glue Data Catalog
Anmerkung
Methode 3 (Automatisch gemounteter awsdatacatalog) erfordert zusätzliche Voraussetzungen. Details dazu finden Sie unter Methode 3: Automatisch gemounteter AWS-Datenkatalog.
S3-Tabellen von Amazon Redshift abfragen
Gehen Sie folgendermaßen vor, um mit der Abfrage von S3-Tabellen zu beginnen:
Schritt 1: Eine IAM-Rolle für Amazon Redshift erstellen
Schritt 2: Fügen Sie Ihrem Amazon Redshift Redshift-Cluster eine IAM-Rolle hinzu
Schritt 3: S3-Tabellen von Amazon Redshift abfragen
Schritt 1: Eine IAM-Rolle für Amazon Redshift erstellen
Ihr Cluster benötigt eine Autorisierung, um auf den externen S3-Tabellen-Katalog zugreifen zu können. AWS Glue Um diese Autorisierung bereitzustellen, verwendet Amazon Redshift eine IAM-Rolle, die Ihrem Cluster zugeordnet ist. Erstellen Sie eine IAM-Rolle mit den folgenden Richtlinienberechtigungen.
Anmerkung
Ersetzen Sie es in der Richtlinie und den Beispielen unten us-west-2 durch Ihre AWS Region und 111122223333 durch Ihre AWS Konto-ID.
Um eine Richtlinie zu erstellen:
Öffnen Sie unter https://console.aws.amazon.com/iam/
die IAM-Konsole. Wählen Sie im Navigationsbereich Richtlinien.
Wählen Sie Richtlinie erstellen aus.
Wählen Sie den Tab JSON.
Fügen Sie das folgende JSON-Richtliniendokument ein:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueDataCatalogPermissions", "Effect": "Allow", "Action": [ "glue:GetCatalog", "glue:GetDatabase", "glue:GetTable", "glue:GetTables", "glue:UpdateTable", "glue:DeleteTable" ], "Resource": [ "arn:aws:glue:us-west-2:111122223333:catalog", "arn:aws:glue:us-west-2:111122223333:catalog/s3tablescatalog", "arn:aws:glue:us-west-2:111122223333:catalog/s3tablescatalog/*", "arn:aws:glue:us-west-2:111122223333:database/s3tablescatalog/*/*", "arn:aws:glue:us-west-2:111122223333:table/s3tablescatalog/*/*/*", "arn:aws:glue:us-west-2:111122223333:database/*", "arn:aws:glue:us-west-2:111122223333:table/*/*" ] }, { "Sid": "S3TablesDataAccessPermissions", "Effect": "Allow", "Action": [ "s3tables:GetTableBucket", "s3tables:GetNamespace", "s3tables:GetTable", "s3tables:GetTableMetadataLocation", "s3tables:GetTableData", "s3tables:ListTableBuckets", "s3tables:CreateTable", "s3tables:PutTableData", "s3tables:UpdateTableMetadataLocation", "s3tables:ListNamespaces", "s3tables:ListTables", "s3tables:DeleteTable" ], "Resource": [ "arn:aws:s3tables:us-west-2:111122223333:bucket/*", "arn:aws:s3tables:us-west-2:111122223333:bucket/*/table/*" ] } ] }Wählen Sie Richtlinie prüfen.
Geben Sie auf der Seite „Richtlinie überprüfen“
GlueCatalogS3Tables_Policyden Namen ein. Geben Sie optional eine Beschreibung ein. Lesen Sie die Richtlinienübersicht und wählen Sie dann Richtlinie erstellen aus.
So erstellen Sie eine IAM-Rolle für Amazon Redshift:
Öffnen Sie die IAM-Konsole
. Wählen Sie im Navigationsbereich Roles aus.
Wählen Sie Create role (Rolle erstellen) aus.
Wählen Sie AWS Service als vertrauenswürdige Entität und dann Redshift als Anwendungsfall.
Wählen Sie unter Anwendungsfall für andere AWS Dienste die Option Redshift — Anpassbar und dann Weiter aus.
Fügen Sie auf der Seite „Berechtigungen hinzufügen“ die
GlueCatalogS3Tables_PolicyRichtlinie an, die Sie oben erstellt haben. Wählen Sie Weiter aus.Geben Sie in Role name (Rollenname) einen Namen für die Rolle ein, z. B.
RedshiftS3TablesRole.Überprüfen Sie die Informationen und wählen Sie dann Rolle erstellen aus.
Wählen Sie im Navigationsbereich Rollen. Wählen Sie den Namen Ihrer neuen Rolle aus, um die Zusammenfassung anzuzeigen, und kopieren Sie dann den Rollen-ARN in Ihre Zwischenablage. Sie verwenden diesen ARN, wenn Sie externe Schemas für S3-Tabellen-Namespaces erstellen.
Anmerkung
Beschränken Sie sich auf bestimmte Ressourcen, indem Sie den Platzhalter durch exakte Amazon-Ressourcennamen (ARNs) ersetzen.
Schritt 2: Fügen Sie Ihrem Amazon Redshift Redshift-Cluster eine IAM-Rolle hinzu
Ordnen Sie die IAM-Rolle, die Sie in Schritt 1 konfiguriert haben, Ihrem Amazon Redshift Redshift-Cluster zu.
Mithilfe der AWS Managementkonsole:
Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon Redshift Redshift-Konsole unter https://console.aws.amazon.com/redshiftv2/
. Wählen Sie im Navigationsmenü Clusters (Cluster) und dann den Cluster aus, den Sie aktualisieren möchten.
Wählen Sie unter Aktionen die Option IAM-Rollen verwalten aus, um die aktuelle Liste der mit dem Cluster verknüpften IAM-Rollen anzuzeigen.
Wählen Sie auf der Seite „IAM-Rollen verwalten“ die IAM-Rolle aus, die Sie hinzufügen möchten, und klicken Sie dann auf IAM-Rolle hinzufügen.
Wählen Sie Done (Beenden), um Ihre Änderungen zu speichern.
Verwenden der AWS CLI:
Führen Sie den folgenden Befehl aus, um eine IAM-Rolle einem vorhandenen Cluster oder Namespace zuzuordnen. Ersetzen Sie my-redshift-cluster oder my-redshift-namespace durch Ihre Cluster-ID oder Ihren Namespace und 111122223333 durch Ihre AWS Konto-ID.
aws redshift modify-cluster-iam-roles \ --cluster-identifier my-redshift-cluster \ --add-iam-roles arn:aws:iam::111122223333:role/RedshiftS3TablesRole -- for serverless aws redshift-serverless update-namespace \ --namespace-name my-redshift-namespace \ --iam-roles "arn:aws:iam::111122223333:role/RedshiftS3TablesRole"
Weitere Informationen finden Sie unter Verknüpfen von IAM-Rollen mit Clustern im Amazon-Redshift-Verwaltungshandbuch.
Schritt 3: S3-Tabellen von Amazon Redshift abfragen
Wenn Sie S3-Tabellen mit integrieren AWS Glue Data Catalog, erstellt der Service eine föderierte Katalogstruktur, die Ressourcen von S3 Tables AWS Glue Katalogobjekten zuordnet:
Ein S3-Tabellen-Bucket wird zu einem Katalog im AWS Glue Data Catalog.
Ein S3-Namespace wird zu einer AWS Glue Datenbank.
Eine S3-Tabelle wird zu einem AWS Glue Tabellenobjekt.
Die Integration erstellt die folgende Hierarchie:
Verbundkatalog:
s3tablescatalog(automatisch erstellt)Untergeordnete Kataloge: Jeder S3-Tabellen-Bucket wird zu einem untergeordneten Katalog.
s3tablescatalogDatenbanken: Jeder S3-Namespace innerhalb eines Tabellen-Buckets wird zu einer Datenbank.
Tabellen: Jede S3-Tabelle innerhalb eines Namespace wird zu einer Tabelle.
Wenn Sie beispielsweise einen S3-Tabellen-Bucket analytics-bucket mit einem Namespace benannt haben, der eine Tabelle sales enthälttransactions, AWS Glue Data Catalog wäre der vollständige Pfad in:. s3tablescatalog/analytics-bucket/sales/transactions
Erstellen Sie einen Ressourcenlink
Bevor Sie eine der drei unten aufgeführten Abfragemethoden verwenden können, müssen Sie einen Ressourcenlink in erstellen AWS Glue Data Catalog. Mithilfe von Ressourcenlinks kann Amazon Redshift über den Standardkatalog auf S3 Tables-Datenbanken verweisen.
Mithilfe der AWS Glue Konsole:
Öffnen Sie die AWS Glue Konsole unter https://console.aws.amazon.com/glue/
. Wählen Sie im Navigationsbereich Datenbanken aus.
Wählen Sie „Erstellen“ und anschließend „Ressourcenlink“.
Geben Sie auf der Seite „Ressourcenlink erstellen“ die folgenden Informationen ein:
Name des Ressourcenlinks: Geben Sie einen Namen für den Ressourcenlink ein (z. B.
sales_resource_link).Gemeinsam genutzte Datenbank: Geben Sie den Datenbankpfad für S3-Tabellen ein (z. B.
s3tablescatalog/analytics-bucket/sales).Eigentümer der gemeinsam genutzten Datenbank: Geben Sie Ihre AWS Konto-ID ein.
Katalog-ID der gemeinsam genutzten Datenbank: Geben Sie die Katalog-ID im folgenden Format ein
<account-id>:s3tablescatalog/<bucket-name>.
Wählen Sie Erstellen aus.
Verwenden der AWS CLI:
aws glue create-database \ --region us-west-2 \ --cli-input-json '{ "CatalogId": "111122223333", "DatabaseInput": { "Name": "sales_resource_link", "TargetDatabase": { "CatalogId": "111122223333:s3tablescatalog/analytics-bucket", "DatabaseName": "sales" } } }'
Dieser Befehl erstellt einen Ressourcenlink mit dem Namen sales_resource_link in Ihrem AWS Glue Standard-Datenkatalog, der auf die sales Datenbank im S3-Tabellen-Bucket verweistanalytics-bucket.
Sobald Ressourcenlinks erstellt wurden, bietet Amazon Redshift drei Methoden zur Abfrage von S3-Tabellen. Wählen Sie die Methode, die am besten zu Ihrem Anwendungsfall passt.
Anmerkung
Um einen Ressourcenlink auf Datenbankebene zu erstellen, muss der Redshift-Administrator über die AWS Glue:CreateDatabase Berechtigung für den Standardkatalog und die zu erstellende Datenbank verfügen.
Methode 1: EXTERNES SCHEMA ERSTELLEN
Verwenden Sie diese CREATE EXTERNAL SCHEMA Option, um ein externes Schema zu erstellen, das auf Ihre S3 Tables-Datenbank verweist. Diese Methode bietet eine explizite Kontrolle über die Benennung und Konfiguration von Schemas.
Vollständige Syntaxdetails finden Sie unter CREATE EXTERNAL SCHEMA im Amazon Redshift Database Developer Guide.
Beispiel
Verwenden Sie den Datenbanknamen und die Katalog-ID aus Schritt 3. 111122223333Ersetzen Sie es durch Ihre AWS Konto-ID.
CREATE EXTERNAL SCHEMA s3tables_schema FROM DATA CATALOG DATABASE 'sales_resource_link' IAM_ROLE 'arn:aws:iam::111122223333:role/RedshiftS3TablesRole' REGION 'us-west-2' CATALOG_ID '111122223333'; SELECT * FROM s3tables_schema.transactions;
Methode 2: DATENBANK AUS ARN ERSTELLEN
Verwenden Sie diese CREATE DATABASE FROM ARN Klausel, um eine Verbunddatenbank zu erstellen, die direkt auf Ihren AWS Glue Ressourcenlink verweist. Diese Methode ordnet die AWS Glue Datenbank automatisch einer Redshift-Datenbank zu.
Vollständige Syntaxdetails finden Sie unter CREATE DATABASE im Amazon Redshift Database Developer Guide.
Beispiel
Ersetzen Sie es 111122223333 durch Ihre AWS Konto-ID.
CREATE DATABASE s3tables_db FROM ARN 'arn:aws:glue:us-west-2:111122223333:database/sales_resource_link' WITH DATA CATALOG SCHEMA analytics_schema IAM_ROLE 'arn:aws:iam::111122223333:role/RedshiftS3TablesRole'; SELECT * FROM s3tables_db.analytics_schema.transactions;
Methode 3: Automatisch gemounteter AWS-Datenkatalog
Amazon Redshift kann AWS Glue Data Catalog Datenbanken, einschließlich Ressourcenlinks für S3-Tabellen, automatisch über die awsdatacatalog Datenbank mounten. Für diese Methode muss der Verbundzugriff auf Spectrum (FAS) auf Ihrem Cluster aktiviert sein.
Voraussetzungen
Um die automatisch gemountete awsdatacatalog Datenbank verwenden zu können, müssen Sie den Verbundzugriff auf Spectrum aktivieren. Dadurch kann Amazon Redshift föderierte Identitätsanmeldedaten für den Zugriff auf externe AWS Glue Data Catalog Datenquellen verwenden.
Um den Verbundzugriff auf Spectrum zu aktivieren:
Stellen Sie mithilfe einer IAM-Identität mit den folgenden Berechtigungen eine Connect zu Ihrem Redshift-Cluster her:
redshift:GetClusterCredentialsWithIAM(für bereitgestellte Cluster) oderredshift-serverless:GetCredentials(für Serverless)AmazonS3ReadOnlyAccessAWSGlueConsoleFullAccessBerechtigungen für S3-Tabellen (wie in Schritt 1 definiert)
Wenn Sie eine Verbindung mit einer IAM-Identität herstellen, erstellt Amazon Redshift automatisch einen Datenbankbenutzer mit dem Präfix
IAM:(für Benutzer) oderIAMR:(für Rollen).Erteilen Sie als Cluster-Administrator dem Verbundbenutzer Berechtigungen für den Zugriff auf das externe Schema.
my_userErsetzen Sie durch Ihre IAM-Rolle oder Ihren Benutzernamen:GRANT ALL ON SCHEMA awsdatacatalog TO "IAMR:my_user";
Ausführliche Anweisungen zur Einrichtung des Verbundzugriffs finden Sie unter Verwenden einer föderierten Identität zur Verwaltung des Amazon Redshift-Zugriffs auf lokale Ressourcen und externe Amazon Redshift Spectrum-Tabellen im Amazon Redshift Management Guide.
S3-Tabellen abfragen
Sobald der Verbundzugriff konfiguriert ist, überprüfen Sie die bereitgestellten Schemas und fragen Sie Ihre S3-Tabellen ab.
Überprüfen Sie die bereitgestellten Schemas:
SHOW SCHEMAS FROM DATABASE awsdatacatalog;
Fragen Sie S3-Tabellen mit dem Namen des Ressourcenlinks aus Schritt 3 ab:
SELECT * FROM awsdatacatalog.sales_resource_link.transactions;