背景
平时在AWS EC2上跑了点东西,方便查学习资料(你懂的)。之所以选择AWS是因为它家提供1年免费套餐,另外海外节点稳定。起先一切看起来不错,可以实现自由冲浪。
但过不了多久就会被 王府井 屏蔽,没办法,多启几个容器吧(内存有限,一次启用5个不同的端口,发现不好用时手工切换本机客户端端口呗,5个端口都换完了就重新绑定个弹性IP,也算个解决办法。
但最近发现, 王府井 的效率变高了。基本上只要访问过一次受限网站,过不了几分钟这个端口就被封了,这让我怎么学习?没办法,不得不重新更换一个新的弹性IP地址。更换IP地址的过程是这样的:
- 登录AWS控制台(国内访问速度比较慢)
- 切换到EC2控制面板
- 分配新的弹性IP地址
- 将新地址绑定到EC2实例
- 释放旧的IP地址
一轮操作下来,一般要十几分钟。有时候半天登录不上,痛苦啊啊啊。。。
每次重复劳动,对于我这个希望用行动改变世界的码农来说,不是我性格啊。趁今天有空,研究了一下如何用AWS命令行工具(AWS CLI)自动替换EC2实例的弹性IP地址,节省我的时间。
编写处理脚本
关于如何配置AWS CLI,请参阅钢哥之前的博文《如何利用AWS CLI进行S3的上传下载》
这里假设你已经配置好了AWS CLI,可以通过命令行连接到你的AWS账户了。简单地通过 aws configure
可以验证你的CLI是否安装正常。
解决思路也很简单:
- 找到我的EC2实例ID (instance id)(我的EC2实例上有个标签,值为
awsjp
); - 找到对应的IP地址分配的ID(allocation id);
- 通过命令行生成新的弹性IP地址;
- 将新IP绑定到EC2实例上;
- 释放旧的弹性IP地址;
以下是我的shell脚本内容,
1 | !/bin/sh |
简单地运行脚本后,会提示新的弹性IP地址。更新到本机客户端,这样又可以愉快的上网了~
当然,你也可以选择其他云提供商,比如:Google,微软,都有免费套餐服务和对应的命令行工具,最主要的是要有稳定的海外节点。
什么?你不知道我在说什么?好吧,其实用 biying搜索 也不错。