2016-12-26 2 views
0

Возможно ли изменить IP-адрес в ec2 с помощью сервера, на котором вы находитесь?Как изменить Эластичный IP в ec2

То, что я в настоящее время сделать в консоли:

  1. Shutdown ec2
  2. разъединить Эластичный IP-адрес
  3. Отпустить Elastic IP-адрес (так что я могу создать новый, в противном случае, он говорит, макс IP-адрес)
  4. Выделяет новый Elastic IP-адрес
  5. Запуска EC2
  6. Свяжите новый Elastic IP-адрес для EC2

Но, я делаю это в консоли, так как сервер ec2 отключается. Есть ли способ сделать это на текущем сервере, который я использую. Например, в псевдокоде:

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

ответ

3

Это возможно. BUT В момент, когда вы отсоедините свой эластичный IP-адрес, вы можете потерять подключение к Интернету в зависимости от настроек вашей подсети. Если ваша подсеть настроена на автоматическое выделение публичного IP-адреса, вы получите публичный IP-адрес (не эластичный IP) между disassociate и associate. Но если ваша общественная подсеть не настроена на автоматическое получение публичного 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) 
Смежные вопросы