如何在 ec2 中更改弹性 IP

How to change an Elastic IP in ec2

是否可以使用您所在的服务器更改 ec2 中的 IP?

我目前在控制台中做的是:

  1. 关闭 ec2
  2. 取消关联弹性 IP 地址
  3. 释放弹性 IP 地址(这样我就可以创建一个新的,否则,它会显示最大 IP)
  4. 分配新的弹性 IP 地址
  5. 启动 ec2
  6. 将新的弹性 IP 地址关联到 ec2

但是,由于 ec2 服务器正在关闭,我正在控制台中执行此操作。有没有办法在我正在使用的当前服务器上执行此操作。例如,在伪代码中:

import ec2, boto
ec2.disappociate_current_ip()
ec2.release_ip()
ec2.allocate_new_ip()
ec2.associate_new_ip()

有可能。 但是 在您解除弹性 IP 地址关联的那一刻,您可能会失去互联网连接,具体取决于您的子网设置。如果您的子网配置为自动分配 public IP,您将在解除关联和关联之间获得一个 public IP(不是弹性 IP)。但是,如果您的 public 子网未配置为自动获取 public IP,您的实例将失去互联网连接(除非有到达互联网的路由)并且脚本的其余部分将不会执行。以下是一个 Boto3 脚本,可为您提供一个想法但未经测试。调整它以满足您的需要。

import boto3
import requests

client = boto3.client('ec2')
inst_id = requests.get('http://169.254.169.254/latest/meta-data/instance-id').text
print inst_id

public_ip = requests.get('http://169.254.169.254/latest/meta-data/public-ipv4').text
print 'Current IP:', public_ip
print 'Disassociating:', public_ip
client.disassociate_address(PublicIp=public_ip)

public_ip = client.allocate_address( Domain='vpc')['PublicIp']
print 'New IP:', public_ip
print 'Associating:', public_ip
client.associate_address(InstanceId=inst_id, PublicIp=public_ip)