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?

More than 1 year has passed since last update.

AWS BackupのEC2リカバリポイントをAWS CLIで別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":[{"Primary":true,"PrivateIpAddress": 復元先のSubnetの範囲の未使用のIPアドレス(復元元が停止している場合は変更の必要ない)  
  "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-12787775",
"Monitoring": "{\"State\":\"disabled\"}",
"CapacityReservationSpecification": "{\"CapacityReservationPreference\":\"open\"}",
"InstanceInitiatedShutdownBehavior": "stop",
"DisableApiTermination": "false",
"KeyName": "uratakey1",
"CreditSpecification": "{\"CpuCredits\":\"standard\"}",
"HibernationOptions": "{\"Configured\":false}",
"EbsOptimized": "false",
"Placement": "{\"AvailabilityZone\":\"ap-northeast-1a\",\"GroupName\":\"\",\"Tenancy\":\"default\"}",
"InstanceType": "t2.micro",
"NetworkInterfaces": "[{\"DeleteOnTermination\":true,\"Description\":\"Primary network interface\",\"DeviceIndex\":0,\"Groups\":[\"sg-07848eaf1e9fff042\"],\"Ipv6AddressCount\":0,\"Ipv6Addresses\":[],\"PrivateIpAddresses\":[{\"Primary\":true,\"PrivateIpAddress\":\"172.31.37.218\"}],\"SecondaryPrivateIpAddressCount\":1,\"SubnetId\":\"subnet-5468a11c\",\"InterfaceType\":\"interface\"}]"
}' --iam-role-arn arn:aws:iam::773181940404: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?