Importieren von Amazon S3 in einen Aurora-PostgreSQL-DB-Cluster - Amazon Aurora

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.

Importieren von Amazon S3 in einen Aurora-PostgreSQL-DB-Cluster

Sie können Daten, die mit Amazon Simple Storage Service gespeichert wurden, in eine Tabelle auf einer Aurora PostgreSQL DB-Cluster-Instance importieren. Um dies zu tun, installieren Sie zuerst die aws_s3-Erweiterung von Aurora PostgreSQL . Diese Erweiterung stellt die Funktionen bereit, die Sie zum Importieren von einem Amazon S3 Bucket verwenden. Ein Bucket ist ein Amazon S3 Container für Objekte und Dateien. Die Daten können sich in einer Datei mit kommagetrennten Werten (CSV), einer Textdatei oder einer komprimierten Datei (GZIP) befinden. Im Folgenden erfahren Sie, wie Sie die Erweiterung installieren und Daten aus Amazon S3 in eine Tabelle importieren.

Um von Simple Storage Service (Amazon S3) in zu importieren, muss Ihre Datenbank PostgreSQL Version 10.7 oder höher verwenden. Aurora PostgreSQL

Wenn Sie keine Daten in Amazon S3 gespeichert haben, müssen Sie zunächst einen Bucket erstellen und die Daten speichern. Weitere Informationen finden Sie in den folgenden Themen im Benutzerhandbuch zum Amazon Simple Storage Service.

Das kontoübergreifende Importieren aus Amazon S3 wird unterstützt. Weitere Informationen finden Sie unter Gewähren kontoübergreifender Berechtigungen im Benutzerhandbuch zu Amazon Simple Storage Service.

Sie können den vom Kunden verwalteten Schlüssel für die Verschlüsselung verwenden, wenn Sie Daten aus S3 importieren. Weitere Informationen finden Sie unter In AWS KMS gespeicherte KMS-Schlüssel im Benutzerhandbuch zu Amazon Simple Storage Service.

Anmerkung

Das Importieren von Daten aus Amazon S3 wird für Aurora Serverless v1 nicht unterstützt. Es wird für Aurora Serverless v2 unterstützt.

Installieren der aws_s3-Erweiterung

Bevor Sie Amazon S3 mit Ihrem Aurora-PostgreSQL-DB-Cluster verwenden können müssen Sie die aws_s3-Erweiterung installieren. Diese Erweiterung bietet Funktionen zum Importieren von Daten aus einem Amazon S3. Sie bietet auch Funktionen zum Exportieren von Daten aus einer Instance eines Aurora-PostgreSQL-DB-Clusters zu einem Amazon-S3-Bucket. Weitere Informationen finden Sie unter Exportieren von Daten aus einem/einer Aurora PostgreSQL-DB-Cluster zu Amazon S3. Die Erweiterung aws_s3 hängt von einigen Hilfsfunktionen in der Erweiterung aws_commons ab, die bei Bedarf automatisch installiert wird.

So installieren Sie die Erweiterung aws_s3
  1. Verwenden Sie psql (oder pgAdmin), um eine Verbindung mit der Writer-Instance Ihres DB-Clusters von Aurora PostgreSQL als Benutzer mit rds_superuser-Berechtigungen herzustellen. Wenn Sie beim Einrichten den Standardnamen beibehalten haben, stellen Sie eine Verbindung als postgres her.

    psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. Führen Sie den folgenden Befehl aus, um die Erweiterung zu installieren.

    postgres=> CREATE EXTENSION aws_s3 CASCADE; NOTICE: installing required extension "aws_commons" CREATE EXTENSION
  3. Wenn Sie überprüfen möchten, ob die Erweiterung installiert wurde, können Sie psql-Metabefehl \dx verwenden.

    postgres=> \dx List of installed extensions Name | Version | Schema | Description -------------+---------+------------+--------------------------------------------- aws_commons | 1.2 | public | Common data types across AWS services aws_s3 | 1.1 | public | AWS S3 extension for importing data from S3 plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language (3 rows)

Die Funktionen zum Importieren von Daten aus Amazon S3 und exportieren von Daten nach Amazon S3 stehen jetzt zur Verfügung.

Übersicht über den Import von Daten aus Amazon S3-Daten

S3-Daten in Aurora PostgreSQL importieren

Sammeln Sie zunächst die Details, die Sie der Funktion zur Verfügung stellen müssen. Dazu gehören der Name der Tabelle auf der Instance Ihres Aurora PostgreSQL-DB-Clusters, sowie der Bucket-Name, der Dateipfad, der Dateityp und der AWS-Region Speicherort der Amazon S3 S3-Daten. Weitere Informationen finden Sie unter Kopieren von Objekten im Benutzerhandbuch zu Amazon Simple Storage Service.

Anmerkung

Der mehrteilige Datenimport aus Amazon S3 wird derzeit nicht unterstützt.

  1. Ermittelt den Namen der Tabelle, in die die aws_s3.table_import_from_s3-Funktion die Daten importieren soll. Mit dem folgenden Befehl wird beispielsweise eine Tabelle t1 erstellt, die in späteren Schritten verwendet werden kann.

    postgres=> CREATE TABLE t1 (col1 varchar(80), col2 varchar(80), col3 varchar(80));
  2. Rufen Sie die Details zum Amazon-S3-Bucket und die zu importierenden Daten ab. Öffnen Sie dazu die Amazon S3-Konsole unter https://console.aws.amazon.com/s3/ und wählen Sie Buckets. Suchen Sie den Bucket, der Ihre Daten enthält, in der Liste. Wählen Sie den Bucket aus, öffnen Sie die Seite Objektübersicht und wählen Sie dann Properties (Eigenschaften).

    Notieren Sie sich den Namen, den Pfad, den und den Dateityp des AWS-Region Buckets. Sie benötigen den Amazon-Ressourcenname (ARN) später, um den Zugriff auf Amazon S3 über eine IAM-Rolle einzurichten. Weitere Informationen finden Sie unter Einrichten des Zugriffs auf einen Amazon S3-Bucket. In der folgenden Abbildung sehen Sie ein Beispiel.

    Bild eines Dateiobjekts in einem Amazon-S3-Bucket.
  3. Sie können den Pfad zu den Daten im Amazon S3 S3-Bucket mit dem AWS CLI Befehl überprüfenaws s3 cp. Wenn die Informationen korrekt sind, lädt dieser Befehl eine Kopie der Amazon S3-Datei herunter.

    aws s3 cp s3://DOC-EXAMPLE-BUCKET/sample_file_path ./
  4. Richten Sie Berechtigungen auf Ihrem Aurora-PostgreSQL-DB-Cluster ein, um den Zugriff auf die Datei im Amazon-S3-Bucket zu gestatten. Dazu verwenden Sie entweder eine AWS Identity and Access Management (IAM-) Rolle oder Sicherheitsanmeldedaten. Weitere Informationen finden Sie unter Einrichten des Zugriffs auf einen Amazon S3-Bucket.

  5. Geben Sie den Pfad und andere gesammelte Amazon S3-Objektdetails (siehe Schritt 2) an die create_s3_uri-Funktion zum Erstellen eines Amazon S3-URI-Objekts. Weitere Informationen zu dieser Funktion finden Sie unter aws_commons.create_s3_uri. Es folgt ein Beispiel für die Erstellung dieses Objekts während einer psql-Sitzung.

    postgres=> SELECT aws_commons.create_s3_uri( 'docs-lab-store-for-rpg', 'versions_and_jdks_listing.csv', 'us-west-1' ) AS s3_uri \gset

    Im nächsten Schritt übergeben Sie dieses Objekt (aws_commons._s3_uri_1) an die aws_s3.table_import_from_s3-Funktion, um die Daten in die Tabelle zu importieren.

  6. Rufen Sie die aws_s3.table_import_from_s3-Funktion zum Importieren der Daten aus Amazon S3 in Ihre Tabelle auf. Referenz-Informationen finden Sie unter aws_s3.table_import_from_s3. Beispiele finden Sie unter Importieren von Daten aus Amazon S3 in Ihren Aurora PostgreSQL DB-Cluster.

Einrichten des Zugriffs auf einen Amazon S3-Bucket

Um Daten aus einer Amazon S3-Datei zu importieren, erteilen Sie dem/der Aurora PostgreSQL-DB-Cluster die Berechtigung, auf den Amazon S3-Bucket zuzugreifen, in dem sich die Datei befindet. Sie können den Zugriff auf einen Amazon S3-Bucket auf zwei Arten erlaubt, wie in den folgenden Themen beschrieben.

Verwenden einer IAM-Rolle für den Zugriff auf einen Amazon S3-Bucket

Bevor Sie Daten aus einer Amazon S3-Datei laden, geben Sie Ihrer Aurora PostgreSQL DB-Cluster die Berechtigung, auf den Amazon S3-Bucket der Datei zuzugreifen. Auf diese Weise müssen Sie keine zusätzlichen Anmeldeinformationen verwalten oder im aws_s3.table_import_from_s3-Funktionsaufruf angeben.

Erstellen Sie dazu eine IAM-Richtlinie, die den Zugriff auf den Amazon S3-Bucket ermöglicht. Erstellen Sie eine IAM-Rolle und hängen Sie die Richtlinie an die Rolle an. Weisen Sie dann die IAM-Rolle Ihrer DB Cluster zu.

Anmerkung

Sie können einem Aurora Serverless v1-DB-Cluster keine IAM-Rolle zuordnen, daher gelten die folgenden Schritte nicht.

Einem Aurora-PostgreSQL-DB-Cluster über eine IAM-Rolle Zugriff auf Amazon S3 gewähren
  1. Erstellen Sie eine IAM-Richtlinie.

    Diese Richtlinie enthält die Bucket- und Objektberechtigungen, die Ihrer Aurora PostgreSQL DB-Cluster den Zugriff auf Amazon S3 ermöglichen.

    Nehmen Sie die folgenden erforderlichen Aktionen in die Richtlinie auf, um die Übertragung von Dateien von einem Amazon S3-Bucket nach Aurora PostgreSQL zu ermöglichen:

    • s3:GetObject

    • s3:ListBucket

    Nehmen Sie die folgenden Ressourcen in die Richtlinie auf, um den Amazon S3-Bucket und Objekte im Bucket zu identifizieren. Dies zeigt das Amazon Resource Name (ARN) Format für den Zugriff auf Amazon S3 an.

    • arn:aws:s3::: DOC-EXAMPLE-BUCKET

    • arn:aws:s3::: DOC-EXAMPLE-BUCKET /*

    Weitere Informationen zum Erstellen einer IAM-Richtlinie für Aurora PostgreSQL finden Sie unter Erstellen und Verwenden einer IAM-Richtlinie für den IAM-Datenbankzugriff. Siehe auch Tutorial: Erstellen und Anfügen Ihrer ersten vom Kunden verwalteten Richtlinie im IAM-Benutzerhandbuch.

    Der folgende Befehl erstellt eine IAM-Richtlinie, die mit diesen Optionen benannt AWS CLI ist. rds-s3-import-policy Er gewährt Zugriff auf einen Bucket mit dem Namen DOC-EXAMPLE-BUCKET.

    Anmerkung

    Notieren Sie sich den Amazon-Ressourcennamen (ARN) der Richtlinie, der vom Befehl zurückgegeben wurde. Sie benötigen den ARN in einem nachfolgenden Schritt, in dem Sie die Richtlinie an eine IAM-Rolle anhängen.

    Beispiel

    Für, oder: Linux macOS Unix

    aws iam create-policy \ --policy-name rds-s3-import-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3import", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }'

    Windows:

    aws iam create-policy ^ --policy-name rds-s3-import-policy ^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3import", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }'
  2. Erstellen Sie eine IAM-Rolle.

    Sie tun dies, damit Aurora PostgreSQL in Ihrem Namen diese IAM-Rolle übernehmen kann, um auf Ihre Amazon S3-Buckets zuzugreifen. Weitere Informationen finden Sie unter Erstellen einer Rolle zum Delegieren von Berechtigungen an einen IAM-Benutzer im IAM-Benutzerhandbuch.

    Wir empfehlen die Verwendung von aws:SourceArn und aws:SourceAccount globaler Bedingungskontext-Schlüssel in ressourcenbasierten Richtlinien, um die Berechtigungen des Dienstes auf eine bestimmte Ressource zu beschränken. Dies ist der effektivste Weg, um sich vor dem verwirrtes Stellvertreterproblem zu schützen.

    Wenn Sie sowohl globale Kontextschlüssel nutzen und der aws:SourceArn-Wert enthält die Konto-ID, muss der aws:SourceAccount-Wert und das Konto im aws:SourceArn-Wert die gleiche Konto-ID verwenden, wenn er in der gleichen Richtlinienanweisung verwendet wird.

    • Verwenden von aws:SourceArn wenn Sie einen serviceübergreifenden Zugriff für eine einzelne Ressource wünschen.

    • Verwenden von aws:SourceAccount wenn Sie zulassen möchten, dass eine Ressource in diesem Konto mit der betriebsübergreifenden Verwendung verknüpft wird.

    Verwenden Sie in der Richtlinie den aws:SourceArn globalen Kontextschlüssel mit dem vollständigen ARN der Ressource. Das folgende Beispiel zeigt, wie Sie dazu den AWS CLI Befehl verwenden, um eine Rolle mit dem Namen zu erstellenrds-s3-import-role.

    Beispiel

    Für LinuxmacOS, oderUnix:

    aws iam create-role \ --role-name rds-s3-import-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:cluster:clustername" } } } ] }'

    Windows:

    aws iam create-role ^ --role-name rds-s3-import-role ^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:cluster:clustername" } } } ] }'
  3. Fügen Sie die erstellte IAM-Richtlinie der IAM-Rolle an, die Sie erstellt haben.

    Mit dem folgenden AWS CLI Befehl wird die im vorherigen Schritt erstellte Richtlinie der Rolle rds-s3-import-role Replace your-policy-arn mit dem Richtlinien-ARN zugeordnet, den Sie in einem früheren Schritt notiert haben.

    Beispiel

    Für LinuxmacOS, oderUnix:

    aws iam attach-role-policy \ --policy-arn your-policy-arn \ --role-name rds-s3-import-role

    Windows:

    aws iam attach-role-policy ^ --policy-arn your-policy-arn ^ --role-name rds-s3-import-role
  4. Fügen Sie die IAM-Rolle der DB Cluster hinzu.

    Sie tun dies, indem Sie das AWS Management Console oder verwenden AWS CLI, wie im Folgenden beschrieben.

So fügen Sie eine IAM-Rolle für eine PostgreSQL DB-Cluster- über die Konsole hinzu:
  1. Melden Sie sich bei der Amazon RDS-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie den Namen der PostgreSQL DB-Cluster- aus, um ihre Details anzuzeigen.

  3. Wählen Sie auf der Registerkarte Connectivity & Security im Bereich Manage IAM roles (IAM-Rollen verwalten) die Rolle aus, die unter Add IAM roles (IAM-Rollen hinzufügen) zu diesen Cluster- hinzugefügt werden soll.

  4. Wählen Sie unter Feature (Funktion) die Option s3Import aus.

  5. Wählen Sie Rolle hinzufügen.

So fügen Sie eine IAM-Rolle für einen PostgreSQL-DB-Cluster mithilfe der CLI hinzu:
  • Verwenden Sie den folgenden Befehl, um die Rolle mit dem Namen my-db-cluster zum PostgreSQL DB-Cluster hinzuzufügen. Ersetzen Sie your-role-arn durch den Rollen-ARN, den Sie im vorherigen Schritt notiert haben. Verwenden Sie s3Import für den Wert der --feature-name-Option.

    Beispiel

    Für LinuxmacOS, oderUnix:

    aws rds add-role-to-db-cluster \ --db-cluster-identifier my-db-cluster \ --feature-name s3Import \ --role-arn your-role-arn \ --region your-region

    Windows:

    aws rds add-role-to-db-cluster ^ --db-cluster-identifier my-db-cluster ^ --feature-name s3Import ^ --role-arn your-role-arn ^ --region your-region

Verwenden von Sicherheitsanmeldeinformationen für den Zugriff auf einen Amazon S3-Bucket

Wenn Sie es vorziehen, können Sie Sicherheitsanmeldeinformationen verwenden, um den Zugriff auf einen Amazon S3-Bucket zu ermöglichen, anstatt den Zugriff mit einer IAM-Rolle zu ermöglichen. Dazu geben Sie die credentials-Parameter im aws_s3.table_import_from_s3-Funktionsaufruf an.

Der credentials Parameter ist eine Struktur vom Typ, die Anmeldeinformationen enthält. aws_commons._aws_credentials_1 AWS Verwenden Sie die Funktion aws_commons.create_aws_credentials, um den Zugriffs- und den Geheimschlüssel in einer aws_commons._aws_credentials_1-Struktur festzulegen, wie nachfolgend dargestellt.

postgres=> SELECT aws_commons.create_aws_credentials( 'sample_access_key', 'sample_secret_key', '') AS creds \gset

Nachdem Sie die aws_commons._aws_credentials_1 -Struktur erstellt haben, verwenden Sie die Funktion aws_s3.table_import_from_s3 mit dem Parameter credentials, um die Daten zu importieren, wie nachfolgend gezeigt.

postgres=> SELECT aws_s3.table_import_from_s3( 't', '', '(format csv)', :'s3_uri', :'creds' );

Sie können auch den Funktionsaufruf aws_commons.create_aws_credentials in den Funktionsaufruf aws_s3.table_import_from_s3 einbinden.

postgres=> SELECT aws_s3.table_import_from_s3( 't', '', '(format csv)', :'s3_uri', aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '') );

Fehlerbehebung beim Zugriff auf Amazon S3

Wenn Sie beim Versuch, Daten aus Amazon S3 zu importieren, auf Verbindungsprobleme stoßen, finden Sie im Folgenden Empfehlungen:

Importieren von Daten aus Amazon S3 in Ihren Aurora PostgreSQL DB-Cluster

Sie importieren Daten aus Ihrem Amazon-S3-Bucket mithilfe der table_import_from_s3-Funktion der aws_s3-Erweiterung. Referenz-Informationen finden Sie unter aws_s3.table_import_from_s3.

Anmerkung

Die folgenden Beispiele verwenden die IAM-Rollen-Methode, um den Zugriff auf den Amazon-S3-Bucket zu ermöglichen. Daher enthalten die aws_s3.table_import_from_s3-Funktionsaufrufe keine Berechtigungsnachweisparameter.

Nachfolgend ist ein typisches Beispiel aufgeführt.

postgres=> SELECT aws_s3.table_import_from_s3( 't1', '', '(format csv)', :'s3_uri' );

Es werden folgende Parameter verwendet:

  • t1 – Der Name für die Tabelle in der PostgreSQL DB Cluster, in die die Daten kopiert werden.

  • '' – Eine optionale Liste mit Spalten in der Datenbanktabelle. Mithilfe dieses Parameters können Sie angeben, welche Spalten der S3-Daten in die Tabellenspalten übernommen werden sollen. Wenn keine Spalten angegeben sind, werden alle Spalten in die Tabelle kopiert. Ein Beispiel zum Verwenden einer Spaltenliste finden Sie unter Importieren einer Amazon S3-Datei, die ein benutzerdefiniertes Trennzeichen verwendet.

  • (format csv) – PostgreSQL COPY-Argumente. Der Kopiervorgang verwendet die Argumente und das Format des PostgreSQL-Befehls COPY, um die Daten zu importieren. Zu den Optionen für das Format gehören kommagetrennte Werte (CSV), Text und Binärwerte. Der Standard ist Text.

  • s3_uri – Eine Struktur mit den Informationen zum Identifizieren der Amazon S3-Datei. Ein Beispiel für die Verwendung der Funktion aws_commons.create_s3_uri zum Erstellen einer s3_uri-Struktur finden Sie unter Übersicht über den Import von Daten aus Amazon S3-Daten.

Weitere Informationen zu dieser Funktion finden Sie unter aws_s3.table_import_from_s3.

Die Funktion gibt aws_s3.table_import_from_s3 zurück. Weitere Informationen zum Angeben von anderen Dateien für den Import aus einem Amazon S3-Bucket finden Sie in einem der folgenden Beispiele.

Anmerkung

Beim Importieren einer Datei mit 0 Byte tritt ein Fehler auf.

Importieren einer Amazon S3-Datei, die ein benutzerdefiniertes Trennzeichen verwendet

Das folgende Beispiel zeigt, wie man eine Datei importiert, die ein benutzerdefiniertes Trennzeichen verwendet. Außerdem wird veranschaulicht, wie mit dem column_list-Parameter der Funktion aws_s3.table_import_from_s3 kontrolliert wird, wo die Daten in der Datenbanktabelle platziert werden.

Für dieses Beispiel wird angenommen, dass die folgenden Informationen in durch Pipe-Zeichen getrennte Spalten in der Amazon S3-Datei angeordnet sind.

1|foo1|bar1|elephant1 2|foo2|bar2|elephant2 3|foo3|bar3|elephant3 4|foo4|bar4|elephant4 ...
So importieren Sie eine Datei, die ein benutzerdefiniertes Trennzeichen verwendet:
  1. Erstellen Sie eine Tabelle in der Datenbank für die importierten Daten.

    postgres=> CREATE TABLE test (a text, b text, c text, d text, e text);
  2. Verwenden Sie die folgende Form der Funktion aws_s3.table_import_from_s3, um Daten aus der Amazon S3-Datei zu importieren.

    Zur Angabe der Datei können Sie auch den Funktionsaufruf aws_commons.create_s3_uri in den Funktionsaufruf aws_s3.table_import_from_s3 einbinden.

    postgres=> SELECT aws_s3.table_import_from_s3( 'test', 'a,b,d,e', 'DELIMITER ''|''', aws_commons.create_s3_uri('DOC-EXAMPLE-BUCKET', 'pipeDelimitedSampleFile', 'us-east-2') );

Die Daten befinden sich nun in den folgenden Spalten der Tabelle.

postgres=> SELECT * FROM test; a | b | c | d | e ---+------+---+---+------+----------- 1 | foo1 | | bar1 | elephant1 2 | foo2 | | bar2 | elephant2 3 | foo3 | | bar3 | elephant3 4 | foo4 | | bar4 | elephant4

Importieren einer Amazon S3-komprimierten Datei (gzip)

Das folgende Beispiel zeigt, wie eine mit gzip komprimierte Datei aus Amazon S3 importiert wird. Die Datei, die Sie importieren, muss die folgenden Amazon-S3-Metadaten aufweisen:

  • Schlüssel: Content-Encoding

  • Wert: gzip

Wenn Sie die Datei mit dem hochladen AWS Management Console, werden die Metadaten in der Regel vom System übernommen. Informationen zum Hochladen von Dateien auf Amazon S3 mithilfe der AWS Management Console AWS CLI, der oder der API finden Sie unter Hochladen von Objekten im Amazon Simple Storage Service-Benutzerhandbuch.

Weitere Informationen zu Amazon-S3-Metadaten und zu vom System bereitgestellten Metadaten finden Sie unter Bearbeiten von Objektmetadaten in der Amazon-S3-Konsole im Benutzerhandbuch für Amazon Simple Storage Service.

Importieren Sie die gzip-Datei folgendermaßen in Ihrer Aurora PostgreSQL DB-Cluster-.

postgres=> CREATE TABLE test_gzip(id int, a text, b text, c text, d text); postgres=> SELECT aws_s3.table_import_from_s3( 'test_gzip', '', '(format csv)', 'DOC-EXAMPLE-BUCKET', 'test-data.gz', 'us-east-2' );

Importieren einer kodierten Amazon S3-Datei

Das folgende Beispiel zeigt, wie eine Datei aus Amazon S3 mit Windows-1252-Kodierung importiert wird.

postgres=> SELECT aws_s3.table_import_from_s3( 'test_table', '', 'encoding ''WIN1252''', aws_commons.create_s3_uri('DOC-EXAMPLE-BUCKET', 'SampleFile', 'us-east-2') );

Funktionsreferenz

aws_s3.table_import_from_s3

Importiert Amazon S3-Daten in eine Aurora PostgreSQL-Tabelle. Die Erweiterung aws_s3 stellt die Funktion aws_s3.table_import_from_s3 bereit. Der Rückgabewert ist Text.

Syntax

Die erforderlichen Parameter sind table_name, column_list und options. Diese Parameter identifizieren die Datenbanktabelle und geben an, wie die Daten in die Tabelle kopiert werden.

Sie können auch die folgenden Parameter verwenden:

  • Die zu importierende Amazon S3-Datei wird mit dem Parameter s3_info übergeben. Wenn Sie diesen Parameter verwenden, wird der Zugriff auf Amazon S3 von einer IAM-Rolle für die PostgreSQL DB-Cluster- bereitgestellt.

    aws_s3.table_import_from_s3 ( table_name text, column_list text, options text, s3_info aws_commons._s3_uri_1 )
  • Die Anmeldeinformationen für den Zugriff auf Amazon S3 werden mit dem Parameter credentials übergeben. Mit diesem Parameter verwenden Sie keine IAM-Rolle.

    aws_s3.table_import_from_s3 ( table_name text, column_list text, options text, s3_info aws_commons._s3_uri_1, credentials aws_commons._aws_credentials_1 )

Parameter

table_name

Eine erforderliche Textzeichenfolge mit dem Namen der PostgreSQL-Datenbanktabelle, in die die Daten importiert werden sollen.

column_list

Eine erforderliche Textzeichenfolge mit einer optionalen Liste der Tabellenspalten der PostgreSQL-Datenbank, in die die Daten kopiert werden sollen. Wenn die Zeichenfolge leer ist, werden alle Spalten der Tabelle verwendet. Ein Beispiel finden Sie unter Importieren einer Amazon S3-Datei, die ein benutzerdefiniertes Trennzeichen verwendet.

options

Eine erforderliche Textzeichenfolge mit Argumenten für den PostgreSQL COPY-Befehl. Diese Parameter legen fest, wie die Daten in die PostgreSQL-Tabelle kopiert werden. Weitere Informationen finden Sie in der PostgreSQL COPY-Dokumentation.

s3_info

Ein zusammengesetzter aws_commons._s3_uri_1-Typ mit den folgenden Informationen zum S3-Objekt:

  • bucket – Der Name des Amazon S3-Buckets, der die Datei enthält.

  • file_path – Der Amazon S3-Dateiname einschließlich des Pfads der Datei.

  • region— Die AWS Region, in der sich die Datei befindet. Eine Liste der AWS Regionsnamen und der zugehörigen Werte finden Sie unterRegionen und Availability Zones.

Anmeldedaten

Ein zusammengesetzter aws_commons._aws_credentials_1-Typ mit den folgenden Anmeldeinformationen, die für den Importvorgang verwendet werden sollen:

  • Zugriffsschlüssel

  • Geheimschlüssel

  • Sitzungs-Token

Hinweise zum Erstellen einer zusammengesetzten aws_commons._aws_credentials_1-Struktur finden Sie unter aws_commons.create_aws_credentials.

Alternative Syntax

Zum Testen können Sie statt der Parameter s3_info und credentials eine erweiterte Gruppe von Parametern verwenden. Nachfolgend sind weitere Syntaxvariationen für die Funktion aws_s3.table_import_from_s3 aufgeführt:

  • Statt den Parameter s3_info zum Identifizieren einer Amazon S3-Datei zu verwenden, nutzen Sie die Kombination aus den Parametern bucket, file_path und region. Mit dieser Form der Funktion wird der Zugriff auf Amazon S3 mit einer IAM-Rolle für die PostgreSQL-DB-Instance bereitgestellt.

    aws_s3.table_import_from_s3 ( table_name text, column_list text, options text, bucket text, file_path text, region text )
  • Statt den Parameter credentials zum Angeben einer Amazon S3-Datei zu verwenden, nutzen Sie die Kombination aus den Parametern access_key, session_key und session_token.

    aws_s3.table_import_from_s3 ( table_name text, column_list text, options text, bucket text, file_path text, region text, access_key text, secret_key text, session_token text )

Alternative Parameter

bucket

Eine Textzeichenfolge mit den Namen des Amazon S3-Buckets, der die Datei enthält.

file_path

Eine Textzeichenfolge, die den Amazon S3-Dateinamen einschließlich des Pfades der Datei enthält.

Region

Eine Textzeichenfolge, die den AWS-Region Speicherort der Datei angibt. Eine Liste der AWS-Region Namen und der zugehörigen Werte finden Sie unterRegionen und Availability Zones.

access_key

Eine Textzeichenfolge mit dem Zugriffsschlüssel, der für den Importvorgang verwendet werden soll. Der Standardwert ist „NULL“.

secret_key

Eine Textzeichenfolge mit dem Geheimschlüssel, der für den Importvorgang verwendet werden soll. Der Standardwert ist „NULL“.

session_token

(Optional) Eine Textzeichenfolge mit dem Sitzungsschlüssel, der für den Importvorgang verwendet werden soll. Der Standardwert ist „NULL“.

aws_commons.create_s3_uri

Erstellt eine aws_commons._s3_uri_1-Struktur für die Amazon S3-Dateiinformationen. Die Ergebnisse der Funktion aws_commons.create_s3_uri werden im Parameter s3_info der Funktion aws_s3.table_import_from_s3 verwendet.

Syntax

aws_commons.create_s3_uri( bucket text, file_path text, region text )

Parameter

bucket

Eine erforderliche Textzeichenfolge mit dem Namen des Amazon S3-Buckets für die Datei.

file_path

Eine erforderliche Textzeichenfolge, die den Amazon S3-Dateinamen einschließlich des Pfads der Datei enthält.

Region

Eine erforderliche Textzeichenfolge AWS-Region , die den Inhalt der Datei enthält. Eine Liste der AWS-Region Namen und der zugehörigen Werte finden Sie unterRegionen und Availability Zones.

aws_commons.create_aws_credentials

Legt einen Zugriffs- und einen Geheimschlüssel in einer aws_commons._aws_credentials_1-Struktur fest. Die Ergebnisse der Funktion aws_commons.create_aws_credentials werden im Parameter credentials der Funktion aws_s3.table_import_from_s3 verwendet.

Syntax

aws_commons.create_aws_credentials( access_key text, secret_key text, session_token text )

Parameter

access_key

Eine erforderliche Textzeichenfolge mit dem Zugriffsschlüssel, der zum Importieren einer Amazon S3-Datei verwendet werden soll. Der Standardwert ist „NULL“.

secret_key

Eine erforderliche Textzeichenfolge mit dem Geheimschlüssel, der zum Importieren einer Amazon S3-Datei verwendet werden soll. Der Standardwert ist „NULL“.

session_token

Eine erforderliche Textzeichenfolge mit dem Sitzungs-Token, der zum Importieren einer Amazon S3-Datei verwendet werden soll. Der Standardwert ist „NULL“. Wenn Sie ein optionales session_token angeben, können Sie temporäre Anmeldeinformationen verwenden.