0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS CLIでEC2のバックアップを別AZに復元する

Last updated at Posted at 2023-05-14

ここでは、AWS BackupでバックアップしていたEC2のリカバリポイントからmetadataを取得し、別AZに復元させるまでをaws cliで実現させます。

1.リカバリポイントの取得
aws backup list-recovery-points-by-backup-vault --backup-vault-name <バックアップボールト名> --output json --query 'RecoveryPoints[].BackupVaultName,RecoveryPointArn]'
[
    [
        "Default",
        "arn:aws:ec2:ap-northeast-1::image/ami-01de27cf0a5b*****"
    ],
    [
        "Default",
        "arn:aws:ec2:ap-northeast-1::image/ami-0f23d2bcc7c84****"
    ],
2.復元もとのリカバリポイントからmetadataを取得する

1で取得したリストから任意のリカバリポイントのmetadaを取得する。
以下の様に多量のJSONが出力されるので、jqコマンドを使用している人は| jq -r '.RestoreMetadata'とかやってmetadataだけを取得しよう。

aws backup get-recovery-point-restore-metadata --backup-vault-name <バックアップボールト名> --recovery-point-arn <リカバリポイントARN> --output json
{
    "BackupVaultArn": "arn:aws:backup:ap-northeast-1:773181940404:backup-vault:Default",
    "RecoveryPointArn": "arn:aws:ec2:ap-northeast-1::image/ami-01de27cf0a5b99***",
    "RestoreMetadata": {
        "CapacityReservationSpecification": "{\"CapacityReservationPreference\":\"open\"}",
        "CpuOptions": "{\"CoreCount\":2,\"ThreadsPerCore\":1}",
        "CreditSpecification": "{\"CpuCredits\":\"standard\"}",
        "DisableApiTermination": "false",
        "EbsOptimized": "false",
        "HibernationOptions": "{\"Configured\":false}",
        "IamInstanceProfileName": "FullRole",
        "InstanceInitiatedShutdownBehavior": "stop",
        "InstanceType": "t2.medium",
        "KeyName": "uratakey1",
        "Monitoring": "{\"State\":\"disabled\"}",
        "NetworkInterfaces": "[{\"AssociatePublicIpAddress\":true,\"DeleteOnTermination\":true,\"Description\":\"\",\"DeviceIndex\":0,\"Groups\":[\"sg-07848eaf1e9fff042\"],\"Ipv6AddressCount\":0,\"Ipv6Addresses\":[],\"NetworkInterfaceId\":\"eni-06b77a5fb974507**\",\"PrivateIpAddress\":\"172.31.37.*\",\"PrivateIpAddresses\":[{\"Primary\":true,\"PrivateIpAddress\":\"172.31.37.*\"}],\"SecondaryPrivateIpAddressCount\":0,\"SubnetId\":\"subnet-5468a11c\",\"InterfaceType\":\"interface\",\"Ipv4Prefixes\":[],\"Ipv6Prefixes\":[]}]",
        "Placement": "{\"AvailabilityZone\":\"ap-northeast-1a\",\"GroupName\":\"\",\"Tenancy\":\"default\"}",
        "RequireIMDSv2": "false",
        "SecurityGroupIds": "[\"sg-07848eaf1e9fff***\"]",
        "SubnetId": "subnet-5468a11c",
        "VpcId": "vpc-12787775",
        "aws:backup:request-id": "c8529137-fcaf-4a6e-8ca6-dde767cf9291"
    }
}
3.metadataを復元先向けに変更する

マネコンの復元ページを見ると以下のパラメータを設定する様になっている。
image.png
なのでほぼ以下"NetworkInterfaces": の修正で問題ない(ようだ)。

変更箇所
"NetworkInterfaces": "[{
   "AssociatePublicIpAddress": パブリックな先に復元しないのでfalseか削除  
   "PrivateIpAddresses": 復元先のSubnetの範囲で未使用のIPアドレス
   "PrivateIpAddresses":[{"Primary":true,"PrivateIpAddress": 復元元が停止している場合は必要ないので削除  
  "VpcId":  復元先が同じVPCの場合は変更しない。
  以下、別AZに復元させる場合は変更する。
  "SubnetId": 復元先のSubnet
  "Placement": "{"AvailabilityZone": 復元先のAZ

4.変更したmetadataから復元する
# --metadata=の部分は、file://”出力したJSONファイ.json"としてもよい。
aws backup start-restore-job --recovery-point-arn arn:aws:ec2:ap-northeast-1::image/ami-0183d4633da528***
--metadata='{
"VpcId": "vpc-127877**",
"Monitoring": "{\"State\":\"disabled\"}",
"CapacityReservationSpecification": "{\"CapacityReservationPreference\":\"open\"}",
"InstanceInitiatedShutdownBehavior": "stop",
"DisableApiTermination": "false",
"KeyName": "BackupTesting",
"CreditSpecification": "{\"CpuCredits\":\"standard\"}",
"HibernationOptions": "{\"Configured\":false}",
"EbsOptimized": "false",
"Placement": "{\"AvailabilityZone\":\"ap-northeast-1a\",\"GroupName\":\"\",\"Tenancy\":\"default\"}",
"aws:backup:request-id": "c1234567-ee7c-4896-beeb-ee123b456***",
"InstanceType": "t2.micro",
"NetworkInterfaces": "[{\"DeleteOnTermination\":true,\"Description\":\"Primary network interface\",\"DeviceIndex\":0,\"Groups\":[\"sg-07848eaf1e9fff***\"],\"Ipv6AddressCount\":0,\"Ipv6Addresses\":[],\"PrivateIpAddresses\":[{\"Primary\":true,\"PrivateIpAddress\":\"172.31.37.**\"}],\"SecondaryPrivateIpAddressCount\":1,\"SubnetId\":\"subnet-5468a11c\",\"InterfaceType\":\"interface\"}]"
}' 
--iam-role-arn arn:aws:iam::773181940***:role/service-role/AWSBackupDefaultServiceRole
5.復元された事の確認

復元ジョブのリソースIDど同IDのインスタンスが復元している。
image.png
image.png

以上、お疲れ様でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?