AWS EC2实例的本地IP更改解决方案

Mau*_*ord 25 amazon-ec2 amazon-web-services

Amazon仅为您提供一定数量的静态IP地址,并且每台EC2实例的本地(私有)ips可在计算机重新启动时更改.这使得创建一个稳定的平台,据我所知,EC2实例依赖于彼此非常难以使用.

我在网上搜索了很多关于各种解决方案的内容,到目前为止,除了在EC2上分配弹性IP地址之外没有任何合理的解决方案,即使它不是公开的.有没有人有任何其他好的想法,实际上很容易执行?

谢谢!

请参阅AWS团队对问题静态本地IP的回复:

EC2实例的内部IP地址通过DHCP分配.在实例关闭时,或者当DHCP租约到期时,IP地址将返回到可用于其他实例的常规EC2 DHCP地址池.

无法保证在重新启动后获得相同的DHCP地址.

编辑:答案是使用亚马逊VPC.除了一小部分额外的设置之外没有任何缺点,因为现在你控制了路由器.这是一个与AWS上普通的旧EC2实例不同的世界.事实上,默认情况下,VPC将为所有未来的AWS设置启用.有关更多信息,请参阅此帖子:http://www.reddit.com/r/aws/comments/1a3n0r/ec2_update_virtual_private_clouds_for_everyone/

gab*_*rtv 16

股票答案是:

  1. 使用AWS VPC,您可以完全控制实例寻址
  2. 使用弹性IP,当用于在EC2实例之间进行通信时,弹性IP将解析为实例的本地地址(不是公共的,如您所期望的那样)


Mau*_*ord 13

我偶然发现了第三种选择.Instragram人员有ec2-ssh.它是一个全局安装的python shell脚本,允许您通过标记名称以及sshvia标记名称查询ec2实例的公共dns .

它的文档几乎不存在.我已经写下了以下安装步骤:

要安装ec2-ssh:

  1. sudo yum install python-boto (ec2 api的python包装器)
  2. git clone https://github.com/Instagram/ec2-ssh
  3. 在您的〜/ .bash_profile中设置您的AWS访问密钥和秘密,如下所示:

    export AWS_ACCESS_KEY_ID = XYZ123

    export AWS_SECRET_ACCESS_KEY = XYZ123

  4. cd进入binrepo 的文件夹,会有两个文件:

    ec2-hostec2-ssh

将它们复制到您的/usr/bin/usr/local/bin.

现在你可以做一些很棒的东西,比如:

$ ec2-host ZenWorker
ec2-999-xy-999-99.compute-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

$ ec2-ssh ZenWorker
Connecting to ec2-999-xy-999-99.compute-1.amazonaws.com.
Run Code Online (Sandbox Code Playgroud)

请注意,在常规shell脚本中,您可以使用反引号来调用这些全局工具.我已经对这些调用进行了定时,并且使用EC2实例需要0.25到0.5秒,所以这确实是唯一的缺点.也许您可以忍受延迟,或者使用公共DNS仅在重新启动时更改实例以解决问题的事实.

请注意,这两个程序是命令行脚本,您不需要任何Python知识即可使用它们.对于PHP粉丝,或那些想要在scp不知道更改公共DNS的情况下轻松访问文件的人,您可以签出ec2dns.