Daten aus Amazon S3 in einen Aurora SQL Postgre-DB-Cluster importieren - 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.

Daten aus Amazon S3 in einen Aurora SQL Postgre-DB-Cluster importieren

Sie können Daten, die mit Amazon Simple Storage Service gespeichert wurden, in eine Tabelle auf einer Aurora SQL Postgre-DB-Cluster-Instance importieren. Dazu installieren Sie zunächst die Erweiterung Aurora Postgre SQL RDS aws_s3. 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 kommagetrennten Wertdatei (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.

In Ihrer Datenbank muss Postgre SQL Version 10.7 oder höher ausgeführt werden, um aus Amazon S3 in Postgre importieren zu können. SQL Aurora Postgret. SQL

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 AWS KMS im Amazon Simple Storage Service-Benutzerhandbuch unter Gespeicherte KMS Schlüssel.

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 SQL Postgre-DB-Cluster RDS müssen Sie die aws_s3 Erweiterung installieren. Diese Erweiterung bietet Funktionen zum Importieren von Daten aus einem Amazon S3. Es bietet auch Funktionen für den Export von Daten aus einer Instance eines Aurora SQL Postgre-DB-Clusters und in einen Amazon S3 S3-Bucket. Weitere Informationen finden Sie unter Exportieren von Daten aus einem Aurora SQL Postgre-DB-Cluster RDS 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 (oderpgAdmin), um als Benutzer mit Rechten eine Verbindung zur Writer-Instance Ihres Aurora SQL Postgre-DB-Clusters RDS herzustellen. rds_superuser 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

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 SQL Postgre-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 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 AWS-Region, den und den Dateityp des Buckets. Sie benötigen später den Amazon-Ressourcennamen (ARN), 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://amzn-s3-demo-bucket/sample_file_path ./
  4. Richten Sie Berechtigungen auf Ihrem Aurora SQL Postgre-DB-Cluster RDS ein, um den Zugriff auf die Datei im Amazon S3 S3-Bucket zu ermöglichen. 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 S3-Objektdetails (siehe Schritt 2) an die create_s3_uri Funktion weiter, um ein Amazon S3 URI S3-Objekt zu erstellen. 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 Daten von Amazon S3 in Ihren Aurora SQL Postgre-DB-Cluster importieren.

Einrichten des Zugriffs auf einen Amazon S3-Bucket

Um Daten aus einer Amazon S3 S3-Datei zu importieren, erteilen Sie dem Aurora SQL Postgre-DB-Cluster RDS die Erlaubnis, auf den Amazon S3 S3-Bucket zuzugreifen, der die Datei enthält. 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 S3-Bucket

Bevor Sie Daten aus einer Amazon S3 S3-Datei laden, erteilen Sie Ihrem Aurora SQL Postgre-DB-Cluster RDS für die SQL Postgre-DB-Instance Erlaubnis, auf den Amazon S3 S3-Bucket zuzugreifen, in dem sich die Datei befindet. 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 Zugriff auf den Amazon S3 S3-Bucket gewährt. Erstellen Sie eine IAM Rolle und fügen Sie die Richtlinie der Rolle hinzu. Weisen Sie die IAM Rolle dann Ihrer zu.

Anmerkung

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

Um einem Aurora SQL Postgre-DB-Cluster RDS über eine Rolle Zugriff auf Amazon S3 zu gewähren IAM
  1. Erstellen Sie eine RichtlinieIAM.

    Diese Richtlinie stellt die Bucket- und Objektberechtigungen bereit, die Ihrem Aurora SQL Postgre-DB-Cluster RDS den Zugriff auf Amazon S3 ermöglichen.

    Nehmen Sie in die Richtlinie die folgenden erforderlichen Aktionen auf, um die Übertragung von Dateien von einem Amazon S3 S3-Bucket nach Aurora Postgre SQL 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 Format Amazon Resource Name (ARN) für den Zugriff auf Amazon S3.

    • arn:aws:s3:::amzn-s3-demo-bucket

    • arn:aws:s3:::amzn-s3-demo-bucket/*

    Weitere Informationen zum Erstellen einer IAM Richtlinie für Aurora Postgre SQL finden Sie SQL unter. Erstellen und Verwenden einer IAM-Richtlinie für den IAM-Datenbankzugriff Siehe auch Tutorial: Erstellen Sie Ihre erste vom Kunden verwaltete Richtlinie und fügen Sie sie als Anlage hinzu im IAMBenutzerhandbuch.

    Mit dem folgenden AWS CLI Befehl wird eine IAM Richtlinie rds-s3-import-policy mit diesen Optionen erstellt. Er gewährt Zugriff auf einen Bucket mit dem Namen amzn-s3-demo-bucket.

    Anmerkung

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

    Beispiel

    Für LinuxmacOS, oderUnix:

    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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }'
  2. Erstellen Sie eine IAM Rolle.

    Sie tun dies, damit Aurora Postgre SQL diese IAM Rolle für den Zugriff auf Ihre Amazon S3 S3-Buckets übernehmen RDS kann. Weitere Informationen finden Sie im Benutzerhandbuch unter Erstellen einer Rolle zur Delegierung von Berechtigungen an einen IAM Benutzer. IAM

    Wir empfehlen die Verwendung der globalen Bedingungskontextschlüssel aws:SourceArn und aws:SourceAccount in ressourcenbasierten Richtlinien, um die Berechtigungen des Services 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.

    Achten Sie in der Richtlinie darauf, den aws:SourceArn globalen Bedingungskontextschlüssel mit ARN der gesamten Ressource zu verwenden. 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. Hängen Sie die IAM Richtlinie, die Sie erstellt haben, an die 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 der Richtlinie hinzugefügtARN, die 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 hinzu.

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

Um mithilfe der Konsole eine IAM Rolle für eine SQL hinzuzufügen
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die RDS Amazon-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie den Namen der SQL , um deren Details anzuzeigen.

  3. Wählen Sie auf der Registerkarte Konnektivität und Sicherheit im Abschnitt IAMRollen verwalten unter Rollen zu dieser hinzufügen die Rolle aus, die hinzugefügt IAM werden soll.

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

  5. Wählen Sie Rolle hinzufügen.

Um eine IAM Rolle für einen SQL Postgre-DB-Cluster hinzuzufügen, verwenden Sie CLI
  • Verwenden Sie den folgenden Befehl, um die Rolle dem SQL Postgre-DB-Cluster mit dem Namen hinzuzufügen. my-db-cluster Ersetzen your-role-arn mit der RolleARN, die Sie in einem 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

Um eine IAM Rolle für eine SQL mithilfe von Amazon hinzuzufügen RDSAPI, rufen Sie den AddRoleToDBClusterVorgang auf.

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

Wenn Sie möchten, können Sie Sicherheitsanmeldedaten verwenden, um Zugriff auf einen Amazon S3 S3-Bucket zu gewähren, anstatt den Zugriff mit einer IAM Rolle zu gewähren. Dazu geben Sie die credentials-Parameter im aws_s3.table_import_from_s3-Funktionsaufruf an.

Der credentials Parameter ist eine Struktur vom Typaws_commons._aws_credentials_1, die AWS Anmeldeinformationen enthält. 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:

Daten von Amazon S3 in Ihren Aurora SQL Postgre-DB-Cluster importieren

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

Anmerkung

In den folgenden Beispielen wird die IAM Role-Methode verwendet, um den Zugriff auf den Amazon S3 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 SQL , in die die Daten kopiert werden sollen.

  • '' – 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)— Postgre-Argumente SQLCOPY. Der Kopiervorgang verwendet die Argumente und das Format des SQLCOPYPostgre-Befehls, um die Daten zu importieren. Als Format stehen, wie in diesem Beispiel gezeigt, kommagetrennte Werte (CSV), Text und Binärformat zur Auswahl. 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('amzn-s3-demo-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 mit dem AWS Management Console, dem oder dem AWS CLI 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 wie folgt in Ihren Aurora SQL Postgre-DB-Cluster RDS .

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)', 'amzn-s3-demo-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('amzn-s3-demo-bucket', 'SampleFile', 'us-east-2') );

Funktionsreferenz

aws_s3.table_import_from_s3

Importiert Amazon S3 S3-Daten in eine Aurora SQL . 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 durch eine IAM Rolle für die SQL 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. Wenn Sie diesen Parameter verwenden, 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, die den Namen der SQL Postgre-Datenbanktabelle enthält, in die die Daten importiert werden sollen.

column_list

Eine erforderliche Textzeichenfolge, die eine optionale Liste der Spalten der SQL Postgre-Datenbanktabelle enthält, 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 Postgre-Befehl. SQL COPY Diese Argumente geben an, wie die Daten in die SQL Postgre-Tabelle kopiert werden sollen. Weitere Informationen finden Sie in der Postgre-Dokumentation. SQL COPY

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. Bei dieser Form der Funktion wird der Zugriff auf Amazon S3 über eine IAM Rolle in der SQL Postgre-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 identifiziert. 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. Die Standardeinstellung istNULL.

secret_key

Eine Textzeichenfolge mit dem Geheimschlüssel, der für den Importvorgang verwendet werden soll. Die Standardeinstellung istNULL.

session_token

(Optional) Eine Textzeichenfolge mit dem Sitzungsschlüssel, der für den Importvorgang verwendet werden soll. Die Standardeinstellung istNULL.

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 Text enthält, in dem sich die Datei befindet. 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. Die Standardeinstellung istNULL.

secret_key

Eine erforderliche Textzeichenfolge mit dem Geheimschlüssel, der zum Importieren einer Amazon S3-Datei verwendet werden soll. Die Standardeinstellung istNULL.

session_token

Eine erforderliche Textzeichenfolge mit dem Sitzungs-Token, der zum Importieren einer Amazon S3-Datei verwendet werden soll. Die Standardeinstellung istNULL. Wenn Sie ein optionales session_token angeben, können Sie temporäre Anmeldeinformationen verwenden.