Automatische Backups eurer AWS Ressourcen mit AWS Backup
February 26, 2020Was sind die besten Backups? Richtig, jene die automatisch auf konsistente Weise ausgeführt und jedes Mal auf zuverlässige Weise wiederhergestellt werden können.
AWS Backup ist ein relativ neuer Dienst, der das Problem konsistenter Sicherungen und Wiederherstellungen angeht. Für eine allgemeine Einführung empfehlen wir euch, den Cloudonaut-Test für AWS Backup zu lesen.
In diesem Beitrag geben wir euch einen Überblick über die Automatisierung von Backups durch Kombination von AWS Backup und AWS CloudFormation.
Lasst uns zunächst einen kurzen Blick auf die AWS Backup-Terminologie werfen:
- Ein “Backup Vault” ist ein Speichercontainer für Backups.
- Ein “Backup Plan” ist der Planer für Sicherungen. Ihr könnt in einer Cron-ähnlichen Syntax angeben, wann Sicherungen durchgeführt werden sollen. Der Backup Plan ist an einen Backup Vault angehängt.
- Ein “Resource assignment” oder “Backup selection” definiert, welche Ressourcen gesichert werden sollen. Derzeit ist die Auswahl von Ressourcen nach Tags oder nach Ressourcen-ARN möglich. Die Backup selection ist an einen Backup Plan angehängt.
- Ein “Recovery Point” ist eine Momentaufnahme / Sicherung einer von AWS Backup gesicherten Ressource. Ein solcher Wiederherstellungspunkt kann mit AWS Backup wiederhergestellt werden.
Und wisst ihr, was wirklich cool ist? AWS Backup kann mithilfe von AWS CloudFormation vollständig automatisiert werden. In diesem Beispiel zeigen wir euch, wie ihr alle derzeit und zukünftig von AWS Backup unterstützten Ressourcentypen (EBS, RDS, DynamoDB, EFS, EC2) sichert, die mit dem Tag-Paar BackupMe
/ daily
getagged sind:
AWSTemplateFormatVersion: "2010-09-09"
Resources:
BackupRole:
Type: AWS::IAM::Role
Properties:
RoleName: SampleBackupRole
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal:
Service:
- backup.amazonaws.com
Action:
- sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForBackup
BackupVault:
Type: AWS::Backup::BackupVault
Properties:
BackupVaultName: SampleBackupVault
BackupPlan:
Type: AWS::Backup::BackupPlan
Properties:
BackupPlan:
BackupPlanName: SampleBackupVault
BackupPlanRule:
- RuleName: RuleForDailyBackups
TargetBackupVault: !Ref BackupVault
ScheduleExpression: cron(0 5 ? * * *)
BackupSelection:
Type: AWS::Backup::BackupSelection
Properties:
BackupSelection:
SelectionName: SampleBackupSelection
IamRoleArn: !GetAtt BackupRole.Arn
ListOfTags:
- ConditionType: STRINGEQUALS
ConditionKey: BackupMe
ConditionValue: daily
BackupPlanId: !Ref BackupPlan
Dieses Beispiel besteht aus vier CloudFormation-Ressourcen:
- Eine IAM-Rolle: AWS Backup benötigt eine Servicerolle, um seine Arbeit in eurem AWS-Konto ausführen zu können. Es verwendet eine von AWS verwaltete IAM-Policy, um die hier zu erledigende Arbeit zu minimieren.
- Ein grundlegender Vault
BackupVault
ist der Container für die Backups. - Ein Backup Plan, der AWS Backup anweist, täglich um fünf Uhr morgens Ressourcen zu sichern. Die von AWS Backup verwendete Syntax ist dieselbe wie bei CloudWatch Events
- Eine Backup selection, die nach Ressourcen sucht, die mit
BackupMe
/daily
getaggt sind.
Nach dem Provisionieren über CloudFormation erstellt AWS Backup tägliche Sicherungen von (unterstützten) Ressourcen, die mit BackupMe
/ daily
getaggt sind - in diesem Beispiel eine DynamoDB-Tabelle:
Das war’s schon! Ihr könnt ganz einfach weitere Backup-Selections und -pläne für eure Workloads und Szenarien hinzufügen.
PS: Es wird derzeit nicht unterstützt, ALLE Ressourcen eines bestimmten Typs zu sichern, da AWS Backup ARNs in der Backup selection nicht zulässt, selbst wenn dies in der Dokumentation in CloudFormation angegeben ist.
PPS: AWS Backup unterstützt derzeit noch keine Backups über AWS-Konten hinweg, von Off-Site-Backups ganz zu schweigen. Die Backups verbleiben derzeit im selben AWS-Konto wie die Quelle. Daher solltet ihr die Backups zumindest über sogenannte Preventive Guardrails (Service Control Policies) schützen. Wie das geht, zeigen wir euch in einem folgenden Blogbeitrag.