跳至内容

在 AWS Backup 中运行 Amazon EC2 恢复操作时,如何更改或保留我的 IP 地址?

2 分钟阅读
0

在 AWS Backup 中恢复 Amazon Elastic Compute Cloud (Amazon EC2) 期间,我想更改或保留我的私有或公有 IP 地址。

解决方法

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

将您的弹性 IP 地址重新关联到恢复的 EC2 实例

要将原始弹性 IP 地址重新关联到已恢复的实例,您可以使用 Amazon EC2 控制台

或者,运行以下 associate-address AWS CLI 命令:

aws ec2 associate-address --instance-id i-07ffe74c7330ebf53 --public-ip 198.51.100.20

**注意:**将 instance-id 替换为您的实例 ID,将 public-ip 替换为您的 IP 地址 ID。

然后,在您停止和启动实例后,该实例会保留该弹性 IP 地址。

保留已恢复的 EC2 实例的私有 IP 地址

**注意:**如果您为实例使用私有 IP 地址,则无法为其他实例保留该私有 IP 地址。有关更多信息,请参阅特定操作的客户端错误代码表中的 Resource.AlreadyAssigned 错误。

要保留私有 IP 地址,请完成以下步骤:

  1. 运行以下 get-recovery-point-restore-metadata 命令:

    aws backup get-recovery-point-restore-metadata --backup-vault-name Default --recovery-point-arn arn:aws:ec2:eu-south-1::image/ami-001a2a3a4a00005aa

    **注意:**将 backup-vault-name 替换为您的保管库名称,将 recovery-point-arn 替换为您的恢复点的 Amazon 资源名称 (ARN)。
    输出示例:

    {    "BackupVaultArn": "arn:aws:backup:eu-south-1:111111111111:backup-vault:Default",  
        "RecoveryPointArn": "arn:aws:ec2:eu-south-1::image/ami-001a2a3a4a00005aa",  
        "RestoreMetadata": {  
            "CapacityReservationSpecification": "{\"CapacityReservationPreference\":\"open\"}",  
            "CpuOptions": "{\"CoreCount\":1,\"ThreadsPerCore\":1}",  
            "CreditSpecification": "{\"CpuCredits\":\"standard\"}",  
            "DisableApiTermination": "false",  
            "EbsOptimized": "false",  
            "HibernationOptions": "{\"Configured\":false}",  
            "InstanceInitiatedShutdownBehavior": "stop",  
            "InstanceType": "t2.micro",  
            "Monitoring": "{\"State\":\"disabled\"}",  
            "NetworkInterfaces": "[{\"AssociatePublicIpAddress\":true,\"DeleteOnTermination\":true,\"Description\":\"\",\"DeviceIndex\":0,\"Groups\":[\"sg-abc123\"],\"Ipv6AddressCount\":0,\"Ipv6Addresses\":[],\"NetworkInterfaceId\":\"eni-08e89a5a35a5495fe\",\"PrivateIpAddress\":\"172.16.1.5\",\"PrivateIpAddresses\":[{\"Primary\":true,\"PrivateIpAddress\":\"172.16.1.5\"}],\"SecondaryPrivateIpAddressCount\":0,\"SubnetId\":\"subnet-0987\",\"InterfaceType\":\"interface\",\"Ipv4Prefixes\":[],\"Ipv6Prefixes\":[]}]",  
            "Placement": "{\"AvailabilityZone\":\"eu-south-1b\",\"GroupName\":\"\",\"Tenancy\":\"default\"}",  
            "RequireIMDSv2": "true",  
            "SecurityGroupIds": "[\"sg-abc123\"]",  
            "SubnetId": "subnet-0987",  
            "VpcId": "vpc-0987",  
            "aws:backup:request-id": "caf1f9d4-abcd-4685-87ce-20c96c99c79c"  
        }  
    }
  2. 手动编辑输出以保留原始 PrivateIpAddress。或者,在 NetworkInterfaces 元数据字段中将 Primary PrivateIpAddress 更改为其他 PrivateIpAddress
    以下输出示例保留了原始 PrivateIpaddress

    {  "Architecture": "x86_64",
    ...
      "NetworkInterfaces": "[{\"DeleteOnTermination\":true,\"Description\":\"Primary network interface\",\"DeviceIndex\":0,\"Groups\":[\"sg-abc123\"],\"Ipv6AddressCount\":0,\"Ipv6Addresses\":[],\"PrivateIpAddresses\":[{\"Primary\":true,\"PrivateIpAddress\":\"172.16.1.5\"}],\"SubnetId\":\"subnet-0987\",\"InterfaceType\":\"interface\",\"Ipv4Prefixes\":[],\"Ipv6Prefixes\":[]}]",
      "Placement": "{\"AvailabilityZone\":\"eu-south-1b\",\"GroupName\":\"\",\"Tenancy\":\"default\"}",
      "RequireIMDSv2": "false",
      "RootDeviceType": "ebs",
      "VirtualizationType": "hvm",
      "VpcId": "vpc-xyz123",
      "aws:backup:request-id": "caf1f9d4-abcd-4685-87ce-20c96c99c79c"
    }
  3. 要创建编辑元数据的脚本,请运行以下 get-recovery-point-restore-metadata 命令:

    aws backup get-recovery-point-restore-metadata --backup-vault-name Default --recovery-point-arn arn:aws:ec2:eu-south-1::image/ami-001a2a3a4a00005aa | jq '.RestoreMetadata | del (.SecurityGroupIds, .SubnetId)' | jq '.NetworkInterfaces = (.NetworkInterfaces | fromjson | map(. + { Description: "Primary network interface" }) | map(del(.NetworkInterfaceId, .SecondaryPrivateIpAddressCount, .AssociatePublicIpAddress, .PrivateIpAddress)) | @json) ' > restore.json

    **注意:**将 backup-vault-name 替换为您的保管库名称,将 recovery-point-arn 替换为您的恢复点的 ARN。

  4. 要使用私有 IP 地址恢复实例,请运行 start-restore-job 命令:

    aws backup start-restore-job --region eu-south-1 --recovery-point-arn arn:aws:ec2:eu-south-1::image/ami-001a2a3a4a00005aa --idempotency-token examplerestore --iam-role-arn "arn:aws:iam::111111111111:role/service-role/AWSBackupDefaultServiceRole" --metadata file://restore.json

    **注意:**将 backup-vault-name 替换为您的保管库名称,将 recovery-point-arn 替换为您的恢复点的 ARN。

相关信息

恢复 Amazon EC2 实例

Amazon EC2 实例 IP 寻址

如何使用 AWS CLI 从 AWS Backup 恢复点恢复 Amazon EC2 实例?

AWS 官方已更新 10 个月前