Wie kann ich mithilfe der AWS-CLI eine Amazon EC2-Instance von einem AWS Backup-Wiederherstellungspunkt aus wiederherstellen?

Lesedauer: 3 Minute
0

Ich möchte eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance mit einem AWS Backup-Wiederherstellungspunkt wiederherstellen. Ich möchte die Instance mithilfe der AWS Command Line Interface (AWS CLI) wiederherstellen.

Lösung

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.

1.Führen Sie den Befehl list-recovery-points-by-backup-vault aus, um alle Wiederherstellungspunkte in Ihrem Tresor aufzulisten:

aws backup list-recovery-points-by-backup-vault --backup-vault-name Default --output json --query 'RecoveryPoints[].[BackupVaultName,RecoveryPointArn]'

2.Kopieren Sie in der Befehlsausgabe den RecoveryPointArn für den Wiederherstellungspunkt, den Sie wiederherstellen möchten.

3.Führen Sie den Befehl get-recovery-point-restore-metadata aus, um die Metadaten der Amazon EC2-Instance abzurufen, die Sie wiederherstellen möchten:

aws backup get-recovery-point-restore-metadata --backup-vault-name Default --recovery-point-arn arn:aws:ec2:eu-west-1::image/ami-012ab3456789c0123

4.Kopieren Sie die Befehlsausgabe, die der folgenden ähnelt:

{
    "BackupVaultArn": "arn:aws:backup:eu-west-1:123456789012:backup-vault:Default",
    "RecoveryPointArn": "arn:aws:ec2:eu-west-1::image/ami-012ab3456789c0123",
    "RestoreMetadata": {
        "CapacityReservationSpecification": "{\"CapacityReservationPreference\":\"open\"}",
        "CpuOptions": "{\"CoreCount\":1,\"ThreadsPerCore\":1}",
        "CreditSpecification": "{\"CpuCredits\":\"standard\"}",
        "DisableApiTermination": "false",
        "EbsOptimized": "false",
        "HibernationOptions": "{\"Configured\":false}",
        "IamInstanceProfileName": "ServerAccess",
        "InstanceInitiatedShutdownBehavior": "stop",
        "InstanceType": "t2.micro",
        "KeyName": "BackupTesting",
        "Monitoring": "{\"State\":\"disabled\"}",
        "NetworkInterfaces": "[{\"AssociatePublicIpAddress\":true,\"DeleteOnTermination\":true,\"Description\":\"\",\"DeviceIndex\":0,\"Groups\":[\"sg-0babcd1234567890f\"],\"Ipv6AddressCount\":0,\"Ipv6Addresses\":[],\"NetworkInterfaceId\":\"eni-12345678a9b0cd1e2\",\"PrivateIpAddress\":\"192.0.2.206\",\"PrivateIpAddresses\":[{\"Primary\":true,\"PrivateIpAddress\":\"192.0.2.206\"}],\"SecondaryPrivateIpAddressCount\":0,\"SubnetId\":\"subnet-1a2b3c4d\",\"InterfaceType\":\"interface\"}]",
        "Placement": "{\"AvailabilityZone\":\"eu-west-1b\",\"GroupName\":\"\",\"Tenancy\":\"default\"}",
        "SecurityGroupIds": "[\"sg-0babcd1234567890f\"]",
        "SubnetId": "subnet-1a2b3c4d",
        "VpcId": "vpc-1a2b3c4d",
        "aws:backup:request-id": "c1234567-ee7c-4896-beeb-ee123b456789"
    }
}

5.Bearbeiten Sie die Befehlsausgabe, um nur die folgenden Metadatenfelder und -werte beizubehalten:

{
"VpcId": "vpc-1a2b3c4d",
"Monitoring": "{\"State\":\"disabled\"}",
"CapacityReservationSpecification": "{\"CapacityReservationPreference\":\"open\"}",
"InstanceInitiatedShutdownBehavior": "stop",
"DisableApiTermination": "false",
"KeyName": "BackupTesting",
"CreditSpecification": "{\"CpuCredits\":\"standard\"}",
"HibernationOptions": "{\"Configured\":false}",
"EbsOptimized": "false",
"Placement": "{\"AvailabilityZone\":\"eu-west-1b\",\"GroupName\":\"\",\"Tenancy\":\"default\"}",
"aws:backup:request-id": "c1234567-ee7c-4896-beeb-ee123b456789",
"InstanceType": "t2.micro",
"NetworkInterfaces": "[{\"DeleteOnTermination\":true,\"Description\":\"Primary network interface\",\"DeviceIndex\":0,\"Groups\":[\"sg-0babcd1234567890f\"],\"Ipv6AddressCount\":0,\"Ipv6Addresses\":[],\"PrivateIpAddresses\":[{\"Primary\":true,\"PrivateIpAddress\":\"192.0.2.210\"}],\"SecondaryPrivateIpAddressCount\":1,\"SubnetId\":\"subnet-1a2b3c4d\",\"InterfaceType\":\"interface\"}]"
}

6.Wenn die ursprüngliche Instance noch verwendet wird, müssen Sie auch die primäre private IP-Adresse in der Metadatenausgabe ändern. Ändern Sie im Metadatenfeld NetworkInterfaces die Primary PrivateIpAddress zu einer anderen IP-Adresse als die, die ursprünglich vom Befehl get-recovery-point-restore-metadata zurückgegeben wurde. Unter den folgenden Bedingungen müssen Sie die primäre private IP-Adresse in den Metadaten nicht ändern:

  • Ihre Instance wurde beendet.
  • Sie möchten die ursprüngliche IP-Adresse verwenden (direkte Wiederherstellung).

7.Speichern Sie die bearbeiteten Metadaten in einer JSON-Datei. Sie können die Datei ec2-restore-metadata.json nennen.

8.Führen Sie den Befehl start-restore-job aus, wobei --recovery-point-arn auf den RecoveryPointArn eingestellt ist, den Sie in Schritt 2 kopiert haben, und --metadataauf die JSON-Datei gesetzt ist, die Sie in Schritt 5 erstellt haben.

aws backup start-restore-job --region eu-west-1 --recovery-point-arn "arn:aws:ec2:eu-west-1::image/ami-012ab3456789c0123" --iam-role-arn "arn:aws:iam::123456789012:role/service-role/AWSBackupDefaultServiceRole"  --metadata file://ec2-restore-metadata.json

Hinweis: Sie können die Instance-Metadaten als Parameter innerhalb des Befehls start-restore-job definieren, anstatt eine JSON-Datei zu verwenden. Führen Sie dazu den Befehl start-restore-job in diesem Format aus:

aws backup start-restore-job --region eu-west-1 --recovery-point-arn "arn:aws:ec2:eu-west-1::image/ami-012ab3456789c0123" --iam-role-arn "arn:aws:iam::123456789012:role/service-role/AWSBackupDefaultServiceRole"  --metadata '{"VpcId": "vpc-1a2b3c4d", "Monitoring": "{\"State\":\"disabled\"}", "CapacityReservationSpecification": "{\"CapacityReservationPreference\":\"open\"}", "InstanceInitiatedShutdownBehavior": "stop", "DisableApiTermination": "false", "KeyName": "BackupTesting", "CreditSpecification": "{\"CpuCredits\":\"standard\"}", "HibernationOptions": "{\"Configured\":false}", "EbsOptimized": "false", "Placement": "{\"AvailabilityZone\":\"eu-west-1b\",\"GroupName\":\"\",\"Tenancy\":\"default\"}", "aws:backup:request-id": "c1234567-ee7c-4896-beeb-ee123b456789", "InstanceType": "t2.micro", "NetworkInterfaces": "[{\"DeleteOnTermination\":true,\"Description\":\"Primary network interface\",\"DeviceIndex\":0,\"Groups\":[\"sg-0babcd1234567890f\"],\"Ipv6AddressCount\":0,\"Ipv6Addresses\":[],\"PrivateIpAddresses\":[{\"Primary\":true,\"PrivateIpAddress\":\"172.31.32.210\"}],\"SecondaryPrivateIpAddressCount\":1,\"SubnetId\":\"subnet-1a2b3c4d\",\"InterfaceType\":\"interface\"}]"}'

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr