

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.

# Automatisieren Sie Backups für Amazon RDS for PostgreSQL PostgreSQL-DB-Instances mithilfe von AWS Batch
Automatisieren Sie Backups für Amazon RDS for PostgreSQL PostgreSQL-DB-Instances

*Kirankumar Chandrashekar, Amazon Web Services*

## Zusammenfassung


Das Sichern Ihrer PostgreSQL-Datenbanken ist eine wichtige Aufgabe und kann in der Regel mit dem [Hilfsprogramm pg\$1dump](https://www.postgresql.org/docs/current/app-pgdump.html) erledigt werden, das standardmäßig den Befehl COPY verwendet, um ein Schema und einen Datendump einer PostgreSQL-Datenbank zu erstellen. Dieser Vorgang kann sich jedoch wiederholen, wenn Sie regelmäßige Backups für mehrere PostgreSQL-Datenbanken benötigen. Wenn Ihre PostgreSQL-Datenbanken in der Cloud gehostet werden, können Sie auch die [automatische Backup-Funktion](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html) von Amazon Relational Database Service (Amazon RDS) für PostgreSQL nutzen. Dieses Muster beschreibt, wie regelmäßige Backups für Amazon RDS for PostgreSQL PostgreSQL-DB-Instances mithilfe des Dienstprogramms pg\$1dump automatisiert werden.

Hinweis: In den Anweisungen wird davon ausgegangen, dass Sie Amazon RDS verwenden. Sie können diesen Ansatz jedoch auch für PostgreSQL-Datenbanken verwenden, die außerhalb von Amazon RDS gehostet werden. Um Backups zu erstellen, muss die AWS Lambda Lambda-Funktion auf Ihre Datenbanken zugreifen können.

Ein zeitbasiertes Amazon CloudWatch Events-Ereignis initiiert eine Lambda-Funktion, die nach bestimmten [Backup-Tags sucht, die auf die Metadaten der PostgreSQL-DB-Instances auf Amazon RDS angewendet](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) wurden. Wenn die PostgreSQL-DB-Instances das Tag **bkp:Automated DBDump = Active** und andere erforderliche Backup-Tags haben, sendet die Lambda-Funktion einzelne Jobs für jede Datenbanksicherung an AWS Batch. 

AWS Batch verarbeitet diese Jobs und lädt die Backup-Daten in einen Amazon Simple Storage Service (Amazon S3) -Bucket hoch. Dieses Muster verwendet eine Dockerfile- und eine Datei entrypoint.sh, um ein Docker-Container-Image zu erstellen, das zum Erstellen von Backups im AWS Batch Batch-Job verwendet wird. Nach Abschluss des Sicherungsvorgangs zeichnet AWS Batch die Backup-Details in einer Inventartabelle auf Amazon DynamoDB auf. Als zusätzliche Schutzmaßnahme löst ein CloudWatch Events-Ereignis eine Amazon Simple Notification Service (Amazon SNS) -Benachrichtigung aus, wenn ein Job in AWS Batch fehlschlägt. 

## Voraussetzungen und Einschränkungen


**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ Eine bestehende verwaltete oder nicht verwaltete Rechenumgebung. Weitere Informationen finden Sie unter [Verwaltete und nicht verwaltete Rechenumgebungen](https://docs.aws.amazon.com/batch/latest/userguide/compute_environments.html) in der AWS Batch Batch-Dokumentation. 
+ [Docker-Image der AWS-Befehlszeilenschnittstelle (CLI), Version 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-docker.html), installiert und konfiguriert.
+ Bestehende Amazon RDS for PostgreSQL PostgreSQL-DB-Instances.  
+ Ein vorhandener S3-Bucket. 
+ [Docker](https://www.docker.com/), installiert und konfiguriert unter Linux, MacOS oder Windows.
+ Vertrautheit mit der Programmierung in Lambda. 

## Architektur


![\[Architektur zur Sicherung von Amazon RDS for PostgreSQL PostgreSQL-DB-Instances mithilfe des Dienstprogramms pg_dump.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/3283f739-980b-43d4-aca0-9d77a2ce3b85/images/352e2eab-1b7d-44ec-840a-a772a175e873.png)


 

**Technologie-Stack**
+  CloudWatch Amazon-Veranstaltungen
+ Amazon DynamoDB
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon RDS
+ Amazon SNS
+ Amazon S3
+ AWS Batch
+ AWS Key Management Service (AWS KMS)
+ AWS Lambda
+ AWS Secrets Manager
+ Docker

## Tools

+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) — CloudWatch Events bietet einen Stream von Systemereignissen, die Änderungen an AWS-Ressourcen beschreiben, nahezu in Echtzeit.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) — DynamoDB ist ein vollständig verwalteter NoSQL-Datenbankservice, der schnelle und vorhersehbare Leistung mit nahtloser Skalierbarkeit bietet.
+ [Amazon ECR](https://docs.aws.amazon.com/ecr/index.html) — Amazon Elastic Container Registry (Amazon ECR) ist ein verwalteter AWS-Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ [Amazon RDS](https://docs.aws.amazon.com/rds/index.html) — Amazon Relational Database Service (Amazon RDS) ist ein Webservice, der die Einrichtung, den Betrieb und die Skalierung einer relationalen Datenbank in der AWS-Cloud erleichtert.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) — Amazon Simple Notification Service (Amazon SNS) ist ein verwalteter Service, der die Nachrichtenzustellung von Herausgebern an Abonnenten ermöglicht.
+ [Amazon S3](https://docs.aws.amazon.com/s3/index.html) — Amazon Simple Storage Service (Amazon S3) ist ein Speicher für das Internet.
+ [AWS Batch](https://docs.aws.amazon.com/batch/index.html) — Mit AWS Batch können Sie Batch-Computing-Workloads in der AWS-Cloud ausführen.
+ [AWS KMS](https://docs.aws.amazon.com/kms/index.html) — AWS Key Management Service (AWS KMS) ist ein verwalteter Service, mit dem Sie auf einfache Weise die zur Verschlüsselung Ihrer Daten verwendeten Verschlüsselungsschlüssel erstellen und kontrollieren können.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/index.html) — Lambda ist ein Rechenservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/index.html) — Secrets Manager hilft Ihnen dabei, hartcodierte Anmeldeinformationen in Ihrem Code, einschließlich Passwörter, durch einen API-Aufruf an Secrets Manager zu ersetzen, um das Geheimnis programmgesteuert abzurufen.
+ [Docker](https://www.docker.com/) — Docker hilft Entwicklern dabei, jede Anwendung als leichten, tragbaren und autarken Container einfach zu packen, zu versenden und auszuführen.

Auf Ihre PostgreSQL-DB-Instances auf Amazon RDS müssen [Tags auf ihre Metadaten angewendet werden](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html). Die Lambda-Funktion sucht nach Tags, um DB-Instances zu identifizieren, die gesichert werden sollten, und die folgenden Tags werden normalerweise verwendet.


| 
| 
| Markierung | Description | 
| --- |--- |
| bkp:Automated = Aktiv DBDump  | Identifiziert eine Amazon RDS-DB-Instance als Kandidaten für Backups. | 
| bkp: = AutomatedBackupSecret <secret\$1name > | Identifiziert das Secrets Manager Manager-Geheimnis, das die Amazon RDS-Anmeldeinformationen enthält. | 
| bkp: DBDump Automatisierter S3-Bucket = <s3\$1bucket\$1name> | Identifiziert den S3-Bucket, an den Backups gesendet werden sollen. | 
| BKPDBDump: Automatisierte FrequenzBKP:Automatisierte DBDump Zeit | Identifizieren Sie die Häufigkeit und die Zeiten, zu denen Datenbanken gesichert werden sollten.  | 
| bkp:pgdumpcommand = <pgdump\$1command> | Identifiziert die Datenbanken, für die die Backups erstellt werden müssen. | 

## Epen


### Erstellen Sie eine Inventartabelle in DynamoDB



| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Tabelle in DynamoDB. | Melden Sie sich bei der AWS-Managementkonsole an, öffnen Sie die Amazon DynamoDB DynamoDB-Konsole und erstellen Sie eine Tabelle. Hilfe zu dieser und anderen Geschichten finden Sie im Abschnitt *Verwandte Ressourcen*. | Cloud-Administrator, Datenbankadministrator | 
| Vergewissern Sie sich, dass die Tabelle erstellt wurde.  | Führen Sie den Befehl `aws dynamodb describe-table --table-name <table-name> \| grep TableStatus` aus. Wenn die Tabelle existiert, gibt der Befehl das `"TableStatus": "ACTIVE",` Ergebnis zurück. | Cloud-Administrator, Datenbankadministrator | 

### Erstellen Sie ein SNS-Thema für fehlgeschlagene Auftragsereignisse in AWS Batch



| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein SNS-Thema. | Öffnen Sie die Amazon SNS SNS-Konsole, wählen Sie **Themen** und erstellen Sie ein SNS-Thema mit dem Namen. `JobFailedAlert` Abonnieren Sie das Thema mit einer aktiven E-Mail-Adresse und überprüfen Sie Ihren E-Mail-Posteingang, um die SNS-Abonnement-E-Mail von AWS Notifications zu bestätigen. | Cloud-Administrator | 
| Erstellen Sie eine Ereignisregel für fehlgeschlagene Jobs für AWS Batch.  | Öffnen Sie die CloudWatch Amazon-Konsole, wählen Sie **Ereignisse** und dann **Regel erstellen** aus. Wählen Sie **Erweiterte Optionen anzeigen** und anschließend **Bearbeiten**. Ersetzen Sie unter „**Ein Muster erstellen, das Ereignisse für die Verarbeitung durch Ihre Ziele auswählt**“ den vorhandenen Text durch den Code „Fehlgeschlagenes Auftragsereignis“ aus dem Abschnitt „*Zusätzliche Informationen*“. Dieser Code definiert eine CloudWatch Ereignisregel, die ausgelöst wird, wenn AWS Batch ein `Failed` Ereignis hat. | Cloud-Administrator | 
| Ziel für eine Ereignisregel hinzufügen.  | Wählen Sie unter **Ziele** die Option **Ziele hinzufügen** und wählen Sie das `JobFailedAlert` SNS-Thema aus. Konfigurieren Sie die verbleibenden Details und erstellen Sie die Cloudwatch Events-Regel. | Cloud-Administrator | 

### Erstellen Sie ein Docker-Image und übertragen Sie es in ein Amazon ECR-Repository



| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Amazon-ECR-Repository. | Öffnen Sie die Amazon ECR-Konsole und wählen Sie die AWS-Region aus, in der Sie Ihr Repository erstellen möchten. Wählen Sie **Repositories** und dann **Create** repository aus. Konfigurieren Sie das Repository gemäß Ihren Anforderungen. | Cloud-Administrator | 
| Schreiben Sie eine Docker-Datei.  | Melden Sie sich bei Docker an und verwenden Sie die „Beispieldatei Dockerfile“ und „Beispieldatei entrypoint.sh“ aus dem Abschnitt *Zusätzliche Informationen*, um ein Dockerfile zu erstellen. | DevOps Ingenieur | 
| Erstellen Sie ein Docker-Image und übertragen Sie es in das Amazon ECR-Repository. | Erstellen Sie das Dockerfile in ein Docker-Image und übertragen Sie es in das Amazon ECR-Repository. *Hilfe zu dieser Geschichte finden Sie im Abschnitt Verwandte Ressourcen.* | DevOps Ingenieur | 

### Erstellen Sie die AWS Batch Batch-Komponenten



| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine AWS Batch Batch-Auftragsdefinition. | Öffnen Sie die AWS Batch Batch-Konsole und erstellen Sie eine Auftragsdefinition, die den Uniform Resource Identifier (URI) des Amazon ECR-Repositorys als Eigenschaft `Image` enthält. | Cloud-Administrator | 
| Konfigurieren Sie die AWS Batch Batch-Jobwarteschlange.  | Wählen Sie in der AWS Batch Batch-Konsole **Job-Warteschlangen** und anschließend **Warteschlange erstellen** aus. Erstellen Sie eine Auftragswarteschlange, in der Jobs gespeichert werden, bis AWS Batch sie auf den Ressourcen in Ihrer Rechenumgebung ausführt. Wichtig: Stellen Sie sicher, dass Sie Logik für AWS Batch schreiben, um die Backup-Details in der DynamoDB-Inventartabelle aufzuzeichnen. | Cloud-Administrator | 

### Eine Lambda-Funktion erstellen und planen



| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Lambda-Funktion, um nach Tags zu suchen. | Erstellen Sie eine Lambda-Funktion, die nach Tags in Ihren PostgreSQL-DB-Instances sucht und Backup-Kandidaten identifiziert. Stellen Sie sicher, dass Ihre Lambda-Funktion das `bkp:AutomatedDBDump = Active` Tag und alle anderen erforderlichen Tags identifizieren kann. Wichtig: Die Lambda-Funktion muss auch in der Lage sein, Jobs zur AWS Batch Batch-Jobwarteschlange hinzuzufügen. | DevOps Ingenieur | 
| Erstellen Sie ein zeitbasiertes Ereignis für CloudWatch Ereignisse.  | Öffnen Sie die CloudWatch Amazon-Konsole und erstellen Sie ein CloudWatch Events-Ereignis, das einen Cron-Ausdruck verwendet, um Ihre Lambda-Funktion regelmäßig auszuführen. Wichtig: Alle geplanten Ereignisse verwenden die UTC-Zeitzone. | Cloud-Administrator | 

### Testen Sie die Backup-Automatisierung



| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Amazon KMS-Schlüssel. | Öffnen Sie die Amazon KMS-Konsole und erstellen Sie einen KMS-Schlüssel, der zur Verschlüsselung der in AWS Secrets Manager gespeicherten Amazon RDS-Anmeldeinformationen verwendet werden kann. | Cloud-Administrator | 
| Erstellen Sie ein AWS Secrets Manager Manager-Geheimnis. | Öffnen Sie die AWS Secrets Manager Manager-Konsole und speichern Sie Ihre Amazon RDS for PostgreSQL PostgreSQL-Datenbankanmeldedaten als geheim. | Cloud-Administrator | 
| Fügen Sie den PostgreSQL-DB-Instances die erforderlichen Tags hinzu. | Öffnen Sie die Amazon RDS-Konsole und fügen Sie Tags zu den PostgreSQL-DB-Instances hinzu, die Sie automatisch sichern möchten. Sie können die Tags aus der Tabelle im Abschnitt *Tools* verwenden. Wenn Sie Backups von mehreren PostgreSQL-Datenbanken innerhalb derselben Amazon RDS-Instance benötigen, verwenden Sie diese `-d test:-d test1` als Wert für das `bkp:pgdumpcommand` Tag. `test`und `test1` sind Datenbanknamen. Stellen Sie sicher, dass nach dem Doppelpunkt (:) kein Leerzeichen steht. | Cloud-Administrator | 
| Überprüfen Sie die Backup-Automatisierung.  | Um die Backup-Automatisierung zu überprüfen, können Sie entweder die Lambda-Funktion aufrufen oder warten, bis der Backup-Zeitplan beginnt. Nachdem der Sicherungsvorgang abgeschlossen ist, überprüfen Sie, ob die DynamoDB-Inventartabelle einen gültigen Backup-Eintrag für Ihre PostgreSQL-DB-Instances enthält. Wenn sie übereinstimmen, ist der Backup-Automatisierungsprozess erfolgreich. | Cloud-Administrator | 

## Zugehörige Ressourcen


**Erstellen Sie eine Inventartabelle in DynamoDB**
+ [Eine Amazon DynamoDB-Tabelle erstellen](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/getting-started-step-1.html)

 

**Erstellen Sie ein SNS-Thema für fehlgeschlagene Auftragsereignisse in AWS Batch**
+ [Ein Amazon SNS SNS-Thema erstellen](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html)
+ [Senden Sie SNS-Benachrichtigungen für fehlgeschlagene Auftragsereignisse in AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/batch_sns_tutorial.html)

 

**Erstellen Sie ein Docker-Image und übertragen Sie es in ein Amazon ECR-Repository**
+ [Erstellen Sie ein Amazon ECR-Repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html)    
+ [Schreiben Sie eine Dockerfile, erstellen Sie ein Docker-Image und übertragen Sie es an Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html)

 

**Erstellen Sie die AWS Batch Batch-Komponenten**
+ [Eine AWS Batch Batch-Auftragsdefinition erstellen](https://docs.aws.amazon.com/batch/latest/userguide/Batch_GetStarted.html#first-run-step-1)    
+ [Konfigurieren Sie Ihre Rechenumgebung und die AWS Batch Batch-Job-Warteschlange](https://docs.aws.amazon.com/batch/latest/userguide/Batch_GetStarted.html#first-run-step-2)   
+ [Erstellen Sie eine Auftragswarteschlange in AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/create-job-queue.html)

 

**Erstellen Sie eine Lambda-Funktion**
+ [Erstellen Sie eine Lambda-Funktion und schreiben Sie Code](https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html)
+ [Verwenden Sie Lambda mit DynamoDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html)

 

**Erstellen Sie ein Veranstaltungsereignis CloudWatch **
+ [Erstellen Sie ein zeitbasiertes CloudWatch Veranstaltungsereignis](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-Scheduled-Rule.html)   
+ [Verwenden Sie Cron-Ausdrücke in Cloudwatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html)

 

**Testen Sie die Backup-Automatisierung**
+ [Einen Amazon KMS-Schlüssel erstellen](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)    
+ [Ein Secrets Manager Manager-Geheimnis erstellen](https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html)
+ [Hinzufügen von Tags zu einer Amazon RDS-Instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)

## Zusätzliche Informationen


**Fehlgeschlagenes Auftragsereignis:**

```
{
  "detail-type": [
    "Batch Job State Change"
  ],
  "source": [
    "aws.batch"
  ],
  "detail": {
    "status": [
      "FAILED"
    ]
  }
}
```

**Beispiel für eine Docker-Datei:**

```
FROM alpine:latest
RUN apk --update add py-pip postgresql-client jq bash && \
pip install awscli && \
rm -rf /var/cache/apk/*
ADD entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
```

**Beispieldatei entrypoint.sh:**

```
 #!/bin/bash
set -e
DATETIME=`date +"%Y-%m-%d_%H_%M"`
FILENAME=RDS_PostGres_dump_${RDS_INSTANCE_NAME}
FILE=${FILENAME}_${DATETIME}

aws configure --profile new-profile set role_arn arn:aws:iam::${TargetAccountId}:role/${TargetAccountRoleName}
aws configure --profile new-profile set credential_source EcsContainer

echo "Central Account access provider IAM role is: "
aws sts get-caller-identity

echo "Target Customer Account access provider IAM role is: "
aws sts get-caller-identity --profile new-profile

securestring=$(aws secretsmanager get-secret-value --secret-id $SECRETID --output json --query 'SecretString' --region=$REGION --profile new-profile)

if [[ ${securestring} ]]; then
    echo "successfully accessed secrets manager and got the credentials"
    export PGPASSWORD=$(echo $securestring | jq --raw-output | jq -r '.DB_PASSWORD')
    PGSQL_USER=$(echo $securestring | jq --raw-output | jq -r '.DB_USERNAME')
    echo "Executing pg_dump for the PostGres endpoint ${PGSQL_HOST}"
    # pg_dump -h $PGSQL_HOST -U $PGSQL_USER -n dms_sample | gzip -9 -c  | aws s3 cp - --region=$REGION  --profile new-profile s3://$BUCKET/$FILE
    # in="-n public:-n private"
    IFS=':' list=($EXECUTE_COMMAND);
    for command in "${list[@]}";
      do
        echo $command;
        pg_dump -h $PGSQL_HOST -U $PGSQL_USER ${command} | gzip -9 -c  | aws s3 cp - --region=$REGION --profile new-profile s3://${BUCKET}/${FILE}-${command}".sql.gz"
        echo $?;
        if  [[ $? -ne 0 ]]; then
            echo "Error occurred in database backup process. Exiting now....."
            exit 1
        else
            echo "Postgresql dump was successfully taken for the RDS endpoint ${PGSQL_HOST} and is uploaded to the following S3 location s3://${BUCKET}/${FILE}-${command}.sql.gz"
            #write the details into the inventory table in central account
            echo "Writing to DynamoDB inventory table"
            aws dynamodb put-item --table-name ${RDS_POSTGRES_DUMP_INVENTORY_TABLE} --region=$REGION --item '{ "accountId": { "S": "'"${TargetAccountId}"'" }, "dumpFileUrl": {"S": "'"s3://${BUCKET}/${FILE}-${command}.sql.gz"'" }, "DumpAvailableTime": {"S": "'"`date +"%Y-%m-%d::%H::%M::%S"` UTC"'"}}'
            echo $?
            if  [[ $? -ne 0 ]]; then
                echo "Error occurred while putting item to DynamoDb Inventory Table. Exiting now....."
                exit 1
            else
                echo "Successfully written to DynamoDb Inventory Table ${RDS_POSTGRES_DUMP_INVENTORY_TABLE}"
            fi
        fi
      done;
else
    echo "Something went wrong {$?}"
    exit 1
fi

exec "$@"
```