Migrieren von Daten nach Amazon Aurora mit PostgreSQL-Kompatibilität - Amazon Aurora

Migrieren von Daten nach Amazon Aurora mit PostgreSQL-Kompatibilität

Sie haben mehrere Möglichkeiten, Daten aus einer vorhandenen Datenbank in einen Amazon Aurora mit PostgreSQL-Kompatibilität-DB-Cluster zu migrieren. Die verfügbaren Migrationsoptionen sind auch von der Quelldatenbank und der Menge der zu migrierenden Daten abhängig. Folgende Optionen sind verfügbar:

Migrieren aus einer RDS-PostgreSQL-DB-Instance

Sie können Daten direkt von einem Amazon RDS-PostgreSQL-DB-Snapshot in einen Aurora PostgreSQL-DB-Cluster migrieren. Weitere Informationen finden Sie unter Migrieren eines RDS-PostgreSQL-DB-Snapshots in einen Aurora PostgreSQL-DB-Cluster.

Sie können auch Daten aus einer RDS-PostgreSQL-DB-Instance migrieren, indem Sie eine Aurora PostgreSQL-Read Replica einer PostgreSQL-DB-Instance erstellen. Wenn die Replica-Verzögerung zwischen der PostgreSQL-DB-Instance und der Aurora PostgreSQL-Read Replica Null ist, können Sie die Replikation stoppen. An diesem Punkt können Sie die Aurora-Read Replica zu einem eigenständigen Aurora PostgreSQL-DB-Cluster für das Lesen und Schreiben machen. Weitere Informationen finden Sie unter Datenmigration von einer RDS PostgreSQL-DB-Instance zu einem Aurora-PostgreSQL-DB-Cluster unter Verwendung einer Aurora-Read Replica.

Migrieren aus einer Datenbank, die nicht PostgreSQL-kompatibel ist

Sie können AWS Database Migration Service (AWS DMS) auch verwenden, um Daten aus einer Datenbank zu migrieren, die nicht PostgreSQL-kompatibel ist. Weitere Informationen zu AWS DMS finden Sie unter Was ist AWS Database Migration Service?

Importieren von Amazon S3-Daten

Sie können durch das Importieren von Daten aus Amazon S3 in eine Tabelle, die zu einem Aurora PostgreSQL-DB-Cluster für eine RDS-PostgreSQL-DB-Instance gehört, migrieren. Weitere Informationen finden Sie unter Importieren von Amazon S3-Daten in einen Aurora PostgreSQL-DB-Cluster.

Eine Liste der AWS-Regionen, in denen Aurora erhältlich ist, finden Sie unter Amazon Aurora in der AWS General Reference.

Migrieren eines RDS-PostgreSQL-DB-Snapshots in einen Aurora PostgreSQL-DB-Cluster

Sie können einen DB-Snapshot einer RDS-PostgreSQL-DB-Instance migrieren und so einen Aurora PostgreSQL-DB-Cluster erstellen. Der neue Aurora PostgreSQL-DB-Cluster wird mit den Daten der ursprünglichen RDS-PostgreSQL-DB-Instance gefüllt. Der DB-Snapshot muss aus einer RDS-DB-Instance mit PostgreSQL 9.6.1 oder 9.6.3 stammen. Informationen zum Erstellen von DB-Snapshots finden Sie unter Erstellen eines DB-Snapshots.

In einigen Fällen befindet sich der DB-Snapshot möglicherweise nicht in der AWS-Region, in der Sie Ihre Daten speichern möchten. Wenn ja, verwenden Sie die Amazon RDS-Konsole zum Kopieren des DB-Snapshots in diese AWS-Region. Informationen zum Kopieren von DB-Snapshots finden Sie unter Kopieren eines DB-Snapshots.

Wenn Sie den DB-Snapshot mithilfe der Konsole migrieren, nimmt die Konsole die erforderlichen Aktionen vor, um den DB-Cluster und die primäre Instance zu erstellen.

Sie können Ihren neuen Aurora PostgreSQL-DB-Cluster auch im Ruhezustand verschlüsseln, indem Sie einen AWS Key Management Service (AWS KMS)-Kundenmasterschlüssel (CMK) verwenden. Diese Option steht nur für unverschlüsselte DB-Snapshots zu Verfügung.

So migrieren Sie einen PostgreSQL-DB-Snapshot mithilfe der RDS-Konsole

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

  2. Klicken Sie auf Snapshots (Snapshots).

  3. Wählen Sie auf der Seite Snapshots (Snapshots) den Snapshot aus, den Sie zu einem Aurora PostgreSQL-DB-Cluster migrieren möchten.

  4. Wählen Sie Migrate Database (Datenbank migrieren) aus.

  5. Legen Sie auf der Seite Migrate Database (Datenbank migrieren) Folgendes fest:

    • DB-Instance-Klasse: Wählen Sie eine DB-Instance-Klasse aus, die über den Speicher und die Kapazität verfügt, die Ihre Datenbank benötigt, beispielsweise db.r3.large. Aurora-Cluster-Volumes werden automatisch vergrößert, wenn die Datenmenge in der Datenbank zunimmt. An Aurora cluster volume can grow to a maximum size of 128 tebibytes (TiB). Sie müssen daher nur eine DB-Instance-Klasse auswählen, die den aktuellen Speicheranforderungen entspricht. Weitere Informationen finden Sie unter Übersicht über Aurora-Speicher.

    • DB Instance Identifier (DB-Instance-Kennung): Geben Sie einen Namen für den DB-Cluster ein, der für Ihr Konto in der ausgewählten AWS-Region eindeutig ist. Dieser Bezeichner wird in den Endpunktadressen für die Instances im DB-Cluster verwendet. Sie können den Namen aussagekräftig gestalten, indem Sie darin die gewählte AWS-Region und DB-Engine angeben (z. B. aurora-cluster1).

      Für den DB-Instance-Bezeichner gelten folgende Einschränkungen:

      • Er muss zwischen 1 und 63 alphanumerische Zeichen oder Bindestriche enthalten.

      • Das erste Zeichen muss ein Buchstabe sein.

      • Darf nicht mit einem Bindestrich enden oder zwei aufeinanderfolgende Bindestriche enthalten.

      • Sie muss für alle DB-Instances pro AWS-Konto und AWS-Region eindeutig sein.

    • VPC: Wenn bereits eine VPC vorhanden ist, können Sie diese mit dem Aurora PostgreSQL-DB-Cluster verwenden, indem Sie Ihre VPC-Kennung auswählen, z. B. vpc-a464d1c1. Informationen zur Verwendung vorhandener VPCs finden Sie unter So erstellen Sie eine VPC für die Verwendung mit Amazon Aurora.

      Anderenfalls können Sie von Amazon RDS eine neue VPC erstellen lassen, indem Sie auf Create a new VPC (Neue VPC erstellen) klicken.

    • Subnetzgruppe: Wenn bereits eine Subnetzgruppe vorhanden ist, können Sie diese mit dem Aurora PostgreSQL-DB-Cluster verwenden, indem Sie Ihre Subnetzgruppen-ID auswählen, z. B. gs-subnet-group1.

      Anderenfalls können Sie eine neue Subnetzgruppe von Amazon RDS erstellen lassen, indem Sie auf Create a new subnet group (Neue Subnetzgruppe erstellen) klicken.

    • Publicly Accessible (Öffentlich zugänglich): Wählen Sie Nein aus, um festzulegen, dass nur Ressourcen innerhalb der VPC auf Instances im DB-Cluster zugreifen dürfen. Wählen Sie Ja aus, um anzugeben, dass Ressourcen im öffentlichen Netzwerk auf Instances im DB-Cluster zugreifen dürfen. Die Standardeinstellung lautet Ja.

      Anmerkung

      Der Produktions-DB-Cluster muss sich nicht unbedingt in einem öffentlichen Subnetz befinden, da nur die Anwendungsserver Zugriff auf ihren DB-Cluster benötigen. Wenn sich das DB-Cluster nicht in einem öffentlichen Subnetz befinden muss, legen Sie Publicly Accessible (Öffentlich zugänglich) auf No (Nein) fest.

    • Availability Zone: Wählen Sie die Availability Zone zum Hosten der primären Instance des Aurora PostgreSQL-DB-Clusters aus. Damit Amazon RDS eine Availability Zone für Sie auswählt, klicken Sie auf No Preference (Keine Präferenz).

    • Database Port (Datenbankport): Geben Sie den Standardport ein, der beim Verbinden der Instances im Aurora PostgreSQL-DB-Cluster verwendet werden soll. Der Standardwert ist 5432.

      Anmerkung

      Möglicherweise lässt die Firewall eines Unternehmens den Zugriff auf Standard-Ports, wie z. B. den PostgreSQL-Standard-Port 5432, nicht zu. Geben Sie in diesem Fall einen Port ein, der von der Firewall Ihres Unternehmens zugelassen wird. Sie benötigen diesen Portwert später, wenn Sie eine Verbindung mit dem Aurora PostgreSQL-DB-Cluster herstellen.

    • Verschlüsselung aktivieren: Wählen Sie Ja aus, wenn der neue Aurora PostgreSQL-DB-Cluster im Ruhezustand verschlüsselt werden soll. Wenn Sie Ja auswählen, wählen Sie auch einen AWS KMS-Kundenmasterschlüssel (CMK) als Masterschlüssel-Wert.

    • Auto minor version upgrade (Upgrade einer Unterversion automatisch durchführen): Wählen Sie Enable auto minor version upgrade (Upgrade einer Unterversion automatisch durchführen) aus, wenn Aktualisierungen der PostgreSQL-DB-Engine-Version automatisch im Aurora PostgreSQL-DB-Cluster installiert werden sollen, sobald sie verfügbar sind.

      Die Option Auto Minor Version Upgrade (Upgrade einer Unterversion automatisch durchführen) gilt nur bei Upgrades für Engine-Unterversionen von PostgreSQL für Ihren Aurora PostgreSQL-DB-Cluster. Regelmäßige Patches zur Aufrechterhaltung der Systemstabilität sind davon nicht betroffen.

  6. Wählen Sie Migrate (Migrieren) aus, um den DB-Snapshot zu migrieren.

  7. Klicken Sie auf Instances und danach auf das Pfeilsymbol, um die DB-Cluster-Details anzuzeigen und den Fortschritt der Migration zu überwachen. Auf der Detailseite wird der Cluster-Endpunkt zum Herstellen einer Verbindung mit der primären Instance des DB-Clusters angezeigt. Weitere Informationen zum Herstellen einer Verbindung mit einem Aurora PostgreSQL-DB-Cluster finden Sie unter Herstellen einer Verbindung mit einem Amazon Aurora-DB-Cluster.

Datenmigration von einer RDS PostgreSQL-DB-Instance zu einem Aurora-PostgreSQL-DB-Cluster unter Verwendung einer Aurora-Read Replica

Sie können von einer PostgreSQL-DB-Instance zu einem Aurora-PostgreSQL-DB-Cluster unter Verwendung einer Aurora-Read Replica migrieren. Wenn Sie von einer RDS-PostgreSQL-DB-Instance zu einem Aurora-PostgreSQL-DB-Cluster migrieren müssen, empfehlen wir diese Herangehensweise.

In diesem Fall nutzt Amazon RDS die Streaming-Replizierungsfunktionalität der PostgreSQL-DB-Engine, um eine spezielle Art von DB-Cluster für die PostgreSQL-DB-Quell-Instance zu erstellen. Diese Art von DB-Cluster wird Aurora-Read Replica genannt. Alle Aktualisierungen, die mit den Daten der PostgreSQL-DB-Quell-Instance vorgenommen werden, werden asynchron in diese Aurora-Read Replica repliziert.

Übersicht über das Migrieren von Daten mittels einer Aurora-Read Replica

Wir empfehlen, eine Aurora-Read Replica Ihrer PostgreSQL-DB-Quell-Instance zu erstellen, um von einer RDS-PostgreSQL-DB-Instance zu einem Aurora-PostgreSQL-DB-Cluster zu migrieren. Wenn die Replica-Verzögerung zwischen der PostgreSQL-DB-Instance und der Aurora PostgreSQL-Read Replica Null ist, können Sie die Replikation stoppen. Nun können Sie die Aurora-Read Replica zu einem eigenständigen Aurora-PostgreSQL-DB-Cluster hochstufen. Dieser eigenständige DB-Cluster kann anschließend Schreiblasten akzeptieren.

Beachten Sie, dass die Migration sehr lange dauern kann. Pro Tebibyte (TiB) Daten werden mehrere Stunden benötigt. Während die Migration läuft, akkumuliert Ihre Amazon RDS-PostgreSQL-Instance Write-Ahead-Log-Segmente (WAL). Sie sollten sicherstellen, dass Ihre Amazon RDS-Instance über genügend Speicherkapazität für diese Segmente verfügt.

Wenn Sie eine Aurora-Read Replica einer PostgreSQL-DB-Instance erstellen, wird von Amazon RDS automatisch ein DB-Snapshot der als Quelle verwendeten PostgreSQL-DB-Instance erstellt. Dieser Snapshot ist für Amazon RDS privat und es fallen keine Gebühren an. Amazon RDS migriert anschließend die Daten vom DB-Snapshot zur Aurora-Read Replica. Nach dem Migrieren der Daten des DB-Snapshots in den neuen Aurora-PostgreSQL-DB-Cluster startet RDS die Replikation zwischen der PostgreSQL-DB-Instance und dem Aurora-PostgreSQL-DB-Cluster.

Sie können nur eine Aurora-Read Replica einer PostgreSQL-DB-Instance erstellen. Wenn Sie versuchen, ein Aurora-Lesereplikat für Ihre Amazon RDS-PostgreSQL-Instance zu erstellen, und bereits ein Lesereplikat haben, wird die Anfrage abgelehnt.

Anmerkung

Funktionsunterschiede zwischen Aurora PostgreSQL und der PostgreSQL-Engine-Version der als Replikationsquelle dienenden RDS PostgreSQL-DB-Instance können zu Problemen mit der Replikation führen. Sie können nur aus einer Amazon RDS-PostgreSQL-Instance replizieren, die mit der jeweiligen Aurora-PostgreSQL-Version kompatibel ist. Ist die unterstützte Aurora-PostgreSQL-Version beispielsweise 9.6.3, muss die Amazon RDS-PostgreSQL-DB-Instance die Versionen 9.6.1 oder höher ausführen. Bei Problemen können Sie Fragen im Amazon RDS-Community-Forum stellen oder sich an AWS Support wenden.

Weitere Informationen zu PostgreSQL Read Replicas finden Sie unter Arbeiten mit Read Replicas im Amazon RDS-Benutzerhandbuch.

Vorbereiten der Migration von Daten mithilfe einer Aurora Read Replica

Bevor Sie Daten von Ihrer RDS-PostgreSQL-Instance zu einem Aurora PostgreSQL-Cluster migrieren, stellen Sie sicher, dass die Instance über genügend Speicherkapazität verfügt. Diese Speicherkapazität ist für die Write-Ahead-Log-Segmente (WAL) vorgesehen, die sich während der Migration ansammeln. Es gibt mehrere Metriken, um dies zu überprüfen, die im Folgenden beschrieben werden.

Metrik Beschreibung

FreeStorageSpace

Den verfügbaren Speicherplatz.

Einheiten: Byte

OldestReplicationSlotLag

Der Verzögerungsgröße für WAL-Daten in der Replika, die die höchste Verzögerung aufweist.

Einheiten: Megabyte

RDSToAuroraPostgreSQLReplicaLag

Die Zeit in Sekunden, wie lange ein Aurora PostgreSQL-DB-Cluster hinter der RDS-DB-Quell-Instance liegt.

TransactionLogsDiskUsage

Der von den Transaktionsprotokollen verwendete Festplattenspeicher.

Einheiten: Megabyte

Weitere Informationen zur Überwachung Ihrer RDS-Instance finden Sie unter Überwachung im Amazon RDS-Benutzerhandbuch.

Erstellen einer Aurora Read Replica

Sie können ein Aurora-Read Replica einer PostgreSQL-DB-Instance über die Konsole oder die AWS CLI erstellen.

Konsole

Sie erstellen Sie eine Aurora Read Replica aus einer PostgreSQL-DB-Instance

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

  2. Wählen Sie im Navigationsbereich Databases (Datenbanken) aus.

  3. Wählen Sie die PostgreSQL-DB-Instance aus, die Sie als Quelle für die Aurora-Read Replica verwenden möchten. Wählen Sie Aurora-Read Replica erstellen für Actions (Aktionen) aus.

    
                                    Erstellen eines Aurora-Read Replicas
  4. Legen Sie die in der folgenden Tabelle beschriebenen DB-Cluster-Einstellungen für die Aurora-Read Replica fest.

    Option Beschreibung

    DB instance class

    Wählen Sie eine DB-Instance-Klasse aus, die die Verarbeitungs- und Speicheranforderungen der primären Instance im DB-Cluster definiert. Weitere Informationen zu den Optionen für DB-Instance-Klassen finden Sie unter DB-Instance-Klassen.

    Multi-AZ deployment (Multi-AZ-Bereitstellung)

    Nicht verfügbar für PostgreSQL

    DB instance identifier (DB-Instance-Kennung)

    Geben Sie einen Namen für die primäre Instance in Ihrem Aurora-Read Replica-DB-Cluster ein. Dieser Bezeichner wird in der Endpunktadresse für die primäre Instance des neuen DB-Clusters verwendet.

    Für den DB-Instance-Bezeichner gelten folgende Einschränkungen:

    • Er muss zwischen 1 und 63 alphanumerische Zeichen oder Bindestriche enthalten.

    • Das erste Zeichen muss ein Buchstabe sein.

    • Darf nicht mit einem Bindestrich enden oder zwei aufeinanderfolgende Bindestriche enthalten.

    • Er muss für alle DB-Instances für jedes AWS-Konto und jede AWS-Region eindeutig sein.

    Der Aurora-Read Replica-DB-Cluster wird aus einem Snapshot der DB-Quell-Instance erstellt. Daher sind der Master-Benutzername und das Master-Passwort für die Aurora-Read Replica mit dem Master-Benutzernamen und Master-Passwort für die DB-Quell-Instance identisch.

    Virtual Private Cloud (VPC)

    Wählen Sie die VPC zum Hosten des DB-Clusters aus. Wählen Sie Create new VPC (Neue VPC erstellen) aus, damit Amazon RDS eine VPC für Sie erstellt. Weitere Informationen finden Sie unter Voraussetzungen für DB-Cluster.

    Subnet group

    Wählen Sie die DB-Subnetzgruppe aus, die für den DB-Cluster verwendet werden soll. Wählen Sie Create new DB subnet group (Neue DB-Subnetzgruppe erstellen) aus, wenn Amazon RDS eine DB-Subnetzgruppe für Sie erstellen soll. Weitere Informationen finden Sie unter Voraussetzungen für DB-Cluster.

    Public accessibility (Öffentliche Zugänglichkeit)

    Wählen Sie Ja aus, wenn der DB-Cluster eine öffentliche IP-Adresse erhalten soll. Wählen Sie andernfalls Nein aus. Die Instances in Ihrem DB-Cluster können eine Mischung aus öffentlichen und privaten DB-Instances sein. Weitere Informationen darüber, wie Sie den öffentlichen Zugriff für Instances deaktivieren, finden Sie unter Deaktivieren des öffentlichen Zugriffs aus dem Internet auf die DB-Instance in einer VPC.

    Availability Zone

    Legen Sie fest, ob Sie eine bestimmte Availability Zone angeben möchten. Weitere Informationen über Availability Zones finden Sie unter Regionen und Availability Zones .

    VPC-Sicherheitsgruppen

    Wählen Sie eine oder mehrere VPC-Sicherheitsgruppen aus, um den Netzwerkzugriff auf den DB-Cluster zu sichern. Wählen Sie Create new VPC security group (Neue VPC-Sicherheitsgruppe erstellen) aus, damit Amazon RDS eine VPC-Sicherheitsgruppe für Sie erstellt. Weitere Informationen finden Sie unter Voraussetzungen für DB-Cluster.

    Database port (Datenbankport)

    Geben Sie den Port an, über den Anwendungen und Dienstprogramme auf die Datenbank zugreifen können. Aurora PostgreSQL-DB-Cluster haben standardmäßig den Standard-PostgreSQL-Port 5432 eingestellt. Die Firewalls einiger Unternehmen blockieren Verbindungen mit diesem Port. Wenn die Firewall Ihres Unternehmens den Standardport blockiert, wählen Sie einen anderen Port für den neuen DB-Cluster aus.

    DB-Parametergruppe

    Wählen Sie eine DB-Parametergruppe für den Aurora-PostgreSQL-DB-Cluster aus. Aurora hat eine Standard-DB-Parametergruppe, die Sie verwenden können. Ebenso können Sie Ihre eigene DB-Parametergruppe erstellen. Weitere Informationen zu DB-Parametergruppen finden Sie unter Arbeiten mit DB-Parametergruppen und DB-Cluster-Parametergruppen.

    DB cluster parameter group (DB-Cluster-Parametergruppe)

    Wählen Sie eine DB-Cluster-Parametergruppe für den Aurora-PostgreSQL-DB-Cluster aus. Aurora hat eine Standard-DB-Cluster-Parametergruppe, die Sie verwenden können. Ebenso können Sie Ihre eigene DB-Cluster-Parametergruppe erstellen. Weitere Informationen zu DB-Cluster-Parametergruppen finden Sie unter Arbeiten mit DB-Parametergruppen und DB-Cluster-Parametergruppen.

    Verschlüsselung

    Wählen Sie Enable encryption (Verschlüsselung aktivieren) aus, wenn das neue Aurora-DB-Cluster im Ruhezustand verschlüsselt werden soll. Wenn Sie Verschlüsselung aktivieren auswählen, wählen Sie auch einen AWS KMS-Kundenmasterschlüssel (CMK) als Masterschlüssel-Wert.

    Priorität

    Wählen Sie eine Failover-Priorität für den DB-Cluster aus. Wenn Sie keinen Wert auswählen, wird als Standard tier-1 (Tier-1) eingestellt. Diese Priorität bestimmt die Reihenfolge, in der Aurora-Replikate bei der Wiederherstellung nach einem Ausfall der primären Instance hochgestuft werden. Weitere Informationen finden Sie unter Fehlertoleranz für einen Aurora-DB-Cluster.

    Backup retention period (Aufbewahrungszeitraum für Sicherungen)

    Wählen Sie den Zeitraum (zwischen 1 und 35 Tage) für die Aufbewahrung von Sicherungskopien der Datenbank in Aurora aus. Sicherungskopien können für sekundengenaue Point-in-Time-Wiederherstellungen (PITR) der Datenbank verwendet werden.

    Enhanced Monitoring (Verbesserte Überwachung)

    Wählen Sie Enable enhanced monitoring (Erweiterte Überwachung aktivieren) aus, um die Erfassung von Metriken in Echtzeit für das Betriebssystem zu aktivieren, in dem Ihr DB-Cluster ausgeführt wird. Weitere Informationen finden Sie unter Enhanced Monitoring (Erweiterte Überwachung).

    Monitoring Role (Überwachungsrolle)

    Nur verfügbar, wenn Enable Enhanced Monitoring (Verbesserte Überwachung aktivieren) festgelegt ist. Legen Sie die zur erweiterten Überwachung verwendete AWS Identity and Access Management (IAM)-Rolle fest. Weitere Informationen finden Sie unter Einrichten und Aktivieren von Enhanced Monitoring.

    Granularität

    Nur verfügbar, wenn Enable Enhanced Monitoring (Erweiterte Überwachung aktivieren) festgelegt ist. Mit ihr können Sie die Zeitspanne zwischen den Erfassungen der Kennzahlen des DB-Clusters in Sekunden festlegen.

    Auto minor version upgrade (Upgrade einer Unterversion automatisch durchführen)

    Klicken Sie auf Ja, wenn Sie möchten, dass Ihr Aurora PostgreSQL-DB-Cluster automatisch Upgrades für PostgreSQL-DB-Engine-Unterversionen erhält, sobald sie verfügbar werden.

    Die Option Auto minor version upgrade (Upgrade einer Unterversion automatisch durchführen) gilt nur für Upgrades der PostgreSQL-Engine-Unterversionen für Ihren Aurora PostgreSQL-DB-Cluster. Regelmäßige Patches zur Aufrechterhaltung der Systemstabilität sind davon nicht betroffen.

    Maintenance window (Wartungsfenster)

    Wählen Sie den wöchentlichen Zeitraum aus, in dem Systemwartungen durchgeführt werden können.

  5. Wählen Sie Read Replica erstellen aus.

AWS CLI

Um eine Aurora-Read Replica aus einer PostgreSQL-DB-Quell-Instance zu erstellen, verwenden Sie die AWS CLI-Befehle create-db-cluster und create-db-instance, um einen neuen Aurora PostgreSQL-DB-Cluster zu erstellen. Geben Sie beim Aufrufen des Befehls create-db-cluster mit dem Parameter --replication-source-identifier den Amazon-Ressourcennamen (ARN) der gewünschten PostgreSQL-DB-Quell-Instance an. Weitere Informationen zu Amazon RDS-ARNs finden Sie unter Amazon Relational Database Service (Amazon RDS) in der AWS General Reference.

Geben Sie nicht den Hauptbenutzernamen, das Hauptpasswort oder den Datenbanknamen an. Der von der Aurora-Read Replica verwendete Hauptbenutzername, das Hauptpasswort und der Datenbankname stimmen mit denen der PostgreSQL-DB-Quell-Instance überein.

Für Linux, macOS oder Unix:

aws rds create-db-cluster --db-cluster-identifier sample-replica-cluster --engine aurora-postgresql \ --db-subnet-group-name mysubnetgroup --vpc-security-group-ids sg-c7e5b0d2 \ --replication-source-identifier arn:aws:rds:us-west-2:123456789012:db:master-postgresql-instance

Für Windows:

aws rds create-db-cluster --db-cluster-identifier sample-replica-cluster --engine aurora-postgresql ^ --db-subnet-group-name mysubnetgroup --vpc-security-group-ids sg-c7e5b0d2 ^ --replication-source-identifier arn:aws:rds:us-west-2:123456789012:db:master-postgresql-instance

Wenn Sie die Konsole verwenden, um eine Aurora-Read Replica zu erstellen, erstellt RDS automatisch die primäre Instance für die Aurora-Read Replica Ihres DB-Clusters. Wenn Sie die CLI zum Erstellen einer Aurora-Read Replica verwenden, müssen Sie die primäre Instance explizit für Ihren DB-Cluster anlegen. Die primäre Instance ist die erste in einem DB-Cluster erstellte Instance.

Sie können eine primäre Instance für Ihren DB-Cluster erstellen, indem Sie den create-db-instance-CLI-Befehl mit folgenden Parametern verwenden:

  • --db-cluster-identifier

    Der Name Ihres DB-Clusters.

  • --db-instance-class

    Der Name der DB-Instance-Klasse, die für Ihre primäre Instance verwendet werden soll.

  • --db-instance-identifier

    Der Name Ihrer primären Instance.

  • --engine aurora-postgresql

    Die zu verwendende Datenbank-Engine.

Im folgenden Beispiel erstellen Sie eine primäre Instance mit dem Namen myreadreplicainstance für den DB-Cluster mit der Bezeichnung myreadreplicacluster. Dies können Sie mithilfe der DB-Instance-Klasse tun, die in myinstanceclass angegeben ist.

Beispiel

Für Linux, macOS oder Unix:

aws rds create-db-instance \ --db-cluster-identifier myreadreplicacluster \ --db-instance-class myinstanceclass --db-instance-identifier myreadreplicainstance \ --engine aurora-postgresql

Für Windows:

aws rds create-db-instance \ --db-cluster-identifier myreadreplicacluster \ --db-instance-class myinstanceclass --db-instance-identifier myreadreplicainstance \ --engine aurora-postgresql

RDS-API

Wenn Sie eine Aurora-Read Replica aus einer PostgreSQL-DB-Quell-Instance erstellen möchten, verwenden Sie die RDS-API-Operationen CreateDBCluster und CreateDBInstance, um einen neuen Aurora-DB-Cluster und eine neue primäre Instance zu erstellen. Geben Sie nicht den Hauptbenutzernamen, das Hauptpasswort oder den Datenbanknamen an. Der von der Aurora-Read Replica verwendete Hauptbenutzername, das Hauptpasswort und der Datenbankname stimmen mit denen der PostgreSQL-DB-Quell-Instance überein.

Sie können einen neuen Aurora-DB-Cluster für eine Aurora-Read Replica aus einer PostgreSQL-DB-Quell-Instance erstellen. Verwenden Sie dazu die RDS-API-Operation CreateDBCluster mit folgenden Parametern:

  • DBClusterIdentifier

    Name des zu erstellenden DB-Clusters.

  • DBSubnetGroupName

    Der Name der DB-Subnetzgruppe, die mit diesem DB-Cluster verknüpft werden soll.

  • Engine=aurora-postgresql

    Der Name der zu verwendenden Engine.

  • ReplicationSourceIdentifier

    Der Amazon Resource Name (ARN) für die Quell-PostgreSQL DB-Instance. Weitere Informationen zu Amazon RDS-ARNs finden Sie unter Amazon Relational Database Service (Amazon RDS) im Allgemeine Amazon Web Services-Referenz.

  • VpcSecurityGroupIds

    Eine Liste der Amazon EC2-VPC-Sicherheitsgruppen, die mit diesem DB-Cluster verknüpft werden sollen.

Im folgenden Beispiel erstellen Sie einen DB-Cluster mit dem Namen myreadreplicacluster aus einer PostgreSQL-DB-Quell-Instance. Dieser Cluster verfügt über einen ARN, der auf mysqlARN festgelegt ist. Der Cluster ist mit einer DB-Subnetzgruppe mit der Bezeichnung mysubnetgroup und einer VPC-Sicherheitsgruppe mit dem Namen mysecuritygroup verknüpft.

Beispiel

https://rds.us-east-1.amazonaws.com/ ?Action=CreateDBCluster &DBClusterIdentifier=myreadreplicacluster &DBSubnetGroupName=mysubnetgroup &Engine=aurora-postgresql &ReplicationSourceIdentifier=mysqlARN &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-10-31 &VpcSecurityGroupIds=mysecuritygroup &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20150927/us-east-1/rds/aws4_request &X-Amz-Date=20150927T164851Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=6a8f4bd6a98f649c75ea04a6b3929ecc75ac09739588391cd7250f5280e716db

Wenn Sie die Konsole verwenden, um eine Aurora Read Replica zu erstellen, erstellt Amazon RDS automatisch die primäre Instance für die Aurora Read Replica Ihres DB-Clusters. Wenn Sie die CLI zum Erstellen einer Aurora-Read Replica verwenden, müssen Sie die primäre Instance explizit für Ihren DB-Cluster anlegen. Die primäre Instance ist die erste in einem DB-Cluster erstellte Instance.

Sie können eine primäre Instance für Ihren DB-Cluster erstellen, indem Sie die RDS-API-Operation CreateDBInstance mit folgenden Parametern verwenden:

  • DBClusterIdentifier

    Der Name Ihres DB-Clusters.

  • DBInstanceClass

    Der Name der DB-Instance-Klasse, die für Ihre primäre Instance verwendet werden soll.

  • DBInstanceIdentifier

    Der Name Ihrer primären Instance.

  • Engine=aurora-postgresql

    Der Name der zu verwendenden Engine.

Im folgenden Beispiel erstellen Sie eine primäre Instance mit dem Namen myreadreplicainstance für den DB-Cluster namens myreadreplicacluster. Dies können Sie mithilfe der DB-Instance-Klasse tun, die in myinstanceclass angegeben ist.

Beispiel

https://rds.us-east-1.amazonaws.com/ ?Action=CreateDBInstance &DBClusterIdentifier=myreadreplicacluster &DBInstanceClass=myinstanceclass &DBInstanceIdentifier=myreadreplicainstance &Engine=aurora-postgresql &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-09-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20140424/us-east-1/rds/aws4_request &X-Amz-Date=20140424T194844Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=bee4aabc750bf7dad0cd9e22b952bd6089d91e2a16592c2293e532eeaab8bc77

Hochstufen einer Aurora Read Replica

Nach Abschluss der Migration können Sie die Aurora-Read Replica zu einem eigenständigen DB-Cluster hochstufen. Sie konfigurieren anschließend Ihre Clientanwendungen für den Zugriff auf den Endpunkt der Aurora-Read Replica. Weitere Informationen zu den Aurora-Endpunkten finden Sie unter Amazon Aurora-Verbindungsverwaltung. Die Hochstufung sollte ziemlich schnell erfolgen. Sie können die primäre PostgreSQL-DB-Instance erst löschen und die Verknüpfung zwischen der DB-Instance und dem Aurora-Lesereplikat Read Replica erst aufheben, wenn die Hochstufung abgeschlossen ist.

Halten Sie vor dem Hochstufen Ihrer Aurora-Read Replica alle Schreibtransaktionen an, damit die PostgreSQL-DB-Quell-Instance nicht beschrieben wird. Warten Sie anschließend, bis die Replikationsverzögerung des Aurora Read Replica null erreicht.

Überprüfen Sie nach der Hochstufung Ihres Lesereplikats, ob sie abgeschlossen wurde. Wählen Sie hierzu im Navigationsbereich Instances (Instances) aus und überprüfen Sie, ob das Ereignis Promoted Read Replica cluster to stand-alone database cluster (Lesereplikat-Cluster zu eigenständigem Datenbank-Cluster hochgestuft) für das Lesereplikat eingetragen wurde. Nach Abschluss der Hochstufung wird die Verknüpfung zwischen der primären PostgreSQL-DB-Instance und dem Aurora Read Replica aufgehoben. Nun können Sie die DB-Instance bei Bedarf sicher löschen.

Konsole

So stufen Sie eine Aurora-Read Replica zu einem Aurora-DB-Cluster hoch:

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

  2. Wählen Sie im Navigationsbereich Instances aus.

  3. Wählen Sie die DB-Instance für das Aurora-Lesereplikat aus und klicken Sie unter Actions (Aktionen) auf Promote (Hochstufen).

  4. Klicken Sie auf Promote Read Replica) Read Replica hochstufen.

AWS CLI

Um eine Aurora Read Replica zu einem eigenständigen DB-Cluster hochzustufen, verwenden Sie den AWS CLI-Befehl promote-read-replica-db-cluster.

Beispiel

Für Linux, macOS oder Unix:

aws rds promote-read-replica-db-cluster \ --db-cluster-identifier myreadreplicacluster

Für Windows:

aws rds promote-read-replica-db-cluster ^ --db-cluster-identifier myreadreplicacluster

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

Sie können Daten aus Amazon S3 in eine Tabelle importieren, die zu einer Aurora PostgreSQL DB-Cluster- gehört. Dazu verwenden Sie die PostgreSQL-Erweiterung aws_s3, die Aurora PostgreSQL bietet.

Anmerkung

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

Weitere Informationen zum Speichern von Daten mit Amazon S3 finden Sie unter Erstellen eines Buckets im Amazon Simple Storage Service Handbuch Erste Schritte. Anweisungen zum Hochladen einer Datei in einen Amazon S3-Bucket finden Sie unter Hinzufügen eines Objekts zu einem Bucket im Amazon Simple Storage Service Handbuch Erste Schritte.

Übersicht über den Import von Amazon S3-Daten

Um in einem Amazon S3-Bucket gespeicherte Daten in eine PostgreSQL-Datenbanktabelle zu importieren, gehen Sie wie folgt vor.

So importieren Sie S3-Daten in Aurora PostgreSQL :

  1. Installieren Sie die erforderlichen PostgreSQL-Erweiterungen. Erforderlich sind die Erweiterungen aws_s3 und aws_commons. Starten Sie dazu psql und verwenden Sie den folgenden Befehl.

    psql=> CREATE EXTENSION aws_s3 CASCADE; NOTICE: installing required extension "aws_commons"

    Die aws_s3-Erweiterung stellt die Funktion aws_s3.table_import_from_s3 bereit, die Sie zum Importieren von Amazon S3-Daten verwenden. Die aws_commons-Erweiterung bietet zusätzliche Helferfunktionen.

  2. Identifizieren Sie die Datenbanktabelle und die zu verwendende Amazon S3-Datei.

    Die Funktion aws_s3.table_import_from_s3 benötigt den Namen der PostgreSQL-Datenbanktabelle, in die Sie Daten importieren möchten. Die Funktion benötigt außerdem die zu importierende Amazon S3-Datei. Um diese Informationen bereitzustellen, führen Sie die folgenden Schritte aus.

    1. Identifizieren Sie die PostgreSQL-Datenbanktabelle, in die die Daten eingefügt werden sollen. Im Folgenden finden Sie beispielsweise eine exemplarische t1-Datenbanktabelle, die in den Beispielen zu diesem Thema verwendet wird.

      psql=> CREATE TABLE t1 (col1 varchar(80), col2 varchar(80), col3 varchar(80));
    2. Holen Sie sich die folgenden Informationen, um die Amazon S3-Datei zu identifizieren, die Sie importieren möchten:

      • Bucket-Name – Ein Bucket ist ein Container für Amazon S3-Objekte oder -Dateien.

      • Dateipfad – Der Dateipfad gibt die Position der Datei im Amazon S3-Bucket an.

      • AWS-Region – Die AWS-Region ist der Ort, an dem sich der Amazon S3-Bucket befindet. Wenn sich der S3-Bucket beispielsweise in der USA Ost (Nord-Virginia)-Region befindet, verwenden Sie us-east-1. Eine Liste der AWS-Regionsnamen und der zugehörigen Werte finden Sie unter Regionen und Availability Zones .

      Informationen zum Abrufen dieser Informationen finden Sie unter Anzeigen eines Objekts im Amazon Simple Storage Service Handbuch Erste Schritte. Sie können die Informationen mit dem AWS CLI-Befehl aws s3 cp bestätigen. Wenn die Informationen korrekt sind, lädt dieser Befehl eine Kopie der Amazon S3-Datei herunter.

      aws s3 cp s3://sample_s3_bucket/sample_file_path ./
    3. Verwenden Sie die Funktion aws_commons.create_s3_uri, um eine aws_commons._s3_uri_1-Struktur zu erstellen, die die Amazon S3-Dateiinformationen enthält. Diese aws_commons._s3_uri_1-Struktur stellen Sie als Parameter im Aufruf der aws_s3.table_import_from_s3-Funktion zur Verfügung.

      Ein Beispiel für psql finden Sie im Folgenden.

      psql=> SELECT aws_commons.create_s3_uri( 'sample_s3_bucket', 'sample.csv', 'us-east-1' ) AS s3_uri \gset
  3. Geben Sie die Berechtigung für den Zugriff auf die Amazon S3-Datei.

    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. Dazu verwenden Sie entweder eine AWS Identity and Access Management (IAM)-Rolle oder Sicherheitsanmeldeinformationen. Weitere Informationen finden Sie unter Einrichten des Zugriffs auf einen Amazon S3-Bucket.

  4. Importieren Sie die Amazon S3-Daten, indem Sie die aws_s3.table_import_from_s3-Funktion aufrufen.

    Nachdem Sie die vorherigen Vorbereitungsaufgaben abgeschlossen haben, verwenden Sie die aws_s3.table_import_from_s3-Funktion, um die Amazon S3-Daten zu importieren. Weitere Informationen finden Sie unter Verwenden der Funktion aws_s3.table_import_from_s3 zum Importieren von Amazon S3-Daten.

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 ermöglichen, 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.

So geben Sie einer Aurora PostgreSQL DB-Cluster über eine IAM-Rolle Zugriff auf Amazon S3:

  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:::Ihr-S3-Bucket

    • arn:aws:s3:::Ihr-S3-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 AWS CLI-Befehl erstellt eine IAM-Richtlinie namens rds-s3-import-policy mit diesen Optionen. Sie gewährt Zugriff auf einen Bucket namens your-s3-bucket.

    Anmerkung

    Notieren Sie nach dem Erstellen der Richtlinie den Amazon-Ressourcennamen (ARN) der Richtlinie. Sie benötigen den ARN für einen nachfolgenden Schritt, in dem Sie die Richtlinie an eine IAM-Rolle anhängen.

    Beispiel

    Für Linux, macOS oder 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:::your-s3-bucket", "arn:aws:s3:::your-s3-bucket/*" ] } ] }'

    Für 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:::your-s3-bucket", "arn:aws:s3:::your-s3-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.

    Das folgende Beispiel zeigt die Verwendung des AWS CLI-Befehls zum Erstellen einer Rolle mit dem Namen rds-s3-import-role.

    Beispiel

    Für Linux, macOS oder Unix:

    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" } ] }'

    Für 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" } ] }'
  3. Fügen Sie die erstellte IAM-Richtlinie der IAM-Rolle an, die Sie erstellt haben.

    Der folgende AWS CLI-Befehl fügt die zuvor erstellte Richtlinie der Rolle namens rds-s3-import-role hinzu. Ersetzen Sie your-policy-arn durch den Richtlinien-ARN, den Sie in einem früheren Schritt notiert haben.

    Beispiel

    Für Linux, macOS oder Unix:

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

    Für 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 die Befehle AWS Management Console oder AWS CLI verwenden, wie nachfolgend beschrieben.

So fügen Sie eine IAM-Rolle für eine PostgreSQL DB-Cluster- über die Konsole hinzu:

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon RDS-Konsole 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 (Konnektivität und Sicherheit) im Bereich Manage IAM roles (IAM-Rollen verwalten) die Rolle aus, die unter Add IAM roles to this instance (IAM-Rollen zu dieser Instance hinzufügen) 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 dem PostgreSQL DB-Cluster mit dem Namen my-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 Linux, macOS oder Unix:

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

    Für 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. Verwenden Sie dazu den Parameter credentials im aws_s3.table_import_from_s3-Funktionsaufruf.

Der credentials-Parameter besteht aus einer Struktur vom Typ aws_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.

psql=> 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.

psql=> 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.

psql=> 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 beim Versuch des Imports von Amazon S3-Dateidaten Verbindungsprobleme auftreten, finden Sie im Folgenden Empfehlungen:

Verwenden der Funktion aws_s3.table_import_from_s3 zum Importieren von Amazon S3-Daten

Importieren Sie Ihre Amazon S3-Daten, indem Sie die Funktion aws_s3.table_import_from_s3 aufrufen.

Anmerkung

Die folgenden Beispiele verwenden die IAM-Rollen-Methode, um den Zugriff auf den Amazon S3-Bucket zu ermöglichen. Damit gibt es keine Anmeldeinformationsparameter in den aws_s3.table_import_from_s3-Funktionsaufrufen.

Nachfolgend ist ein typisches PostgreSQL-Beispiel mit psql aufgeführt.

psql=> 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. Beim Kopiervorgang werden die Argumente und das Format des PostgreSQL COPY-Befehls verwendet. Im vorhergehenden Beispiel wird für den COPY-Befehl das durch Komma getrennte CSV-Dateiformat zum Kopieren der Daten verwendet.

  • 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 Amazon S3-Daten.

Die vollständige Referenz dieser Funktion finden Sie in aws_s3.table_import_from_s3.

Die folgenden Beispiele zeigen, wie Sie beim Importieren von Amazon S3-Daten verschiedene Arten von Dateien angeben können.

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.

    psql=> CREATE TABLE test (a text, b text, c text, d text, e text); CREATE TABLE
  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.

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

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

psql=> 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.

Überprüfen Sie, dass die Datei die folgenden Amazon S3-Metadaten enthält:

  • Schlüssel: Content-Encoding

  • Wert: gzip

Weitere Informationen über das Hinzufügen dieser Werte zu Amazon S3-Metadaten finden Sie unter Wie füge ich einem S3-Objekt Metadaten hinzu? im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.

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

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

Importieren einer kodierten Amazon S3-Datei

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

psql=> SELECT aws_s3.table_import_from_s3( 'test_table', '', 'encoding ''WIN1252''', aws_commons.create_s3_uri('sampleBucket', '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.

Syntax

Die drei 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 folgende 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.

Optionen

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-Pfad der Datei.

  • region – Die AWS-Region, in der sich die Datei befindet. Eine Liste der AWS-Regionsnamen und der zugehörigen Werte finden Sie unter Regionen 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 mit dem Amazon S3-Pfad der Datei.

Region

Eine Textzeichenfolge mit der AWS-Region, in der sich die Datei befindet. Eine Liste der AWS-Regionsnamen und der zugehörigen Werte finden Sie unter Regionen und Availability Zones .

Zugriffsschlüssel

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 mit dem Amazon S3-Pfad der Datei.

Region

Eine erforderliche Textzeichenfolge mit der AWS-Region, in der sich die Datei befindet. Eine Liste der AWS-Regionsnamen und der zugehörigen Werte finden Sie unter Regionen 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
Zugriffsschlüssel

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.