从Docker容器中检测AWS主机环境
从Docker容器中,我如何检测到我在AWS环境中运行? 我希望相同的容器可以select性地在AWS内启动IF时运行一些AWS命令,但是如果在本地环境中运行,则跳过这些命令。
目前,我认为简单的方法是在AWS中运行时设置一个环境variables。
有另一种方法吗?
如果你的Docker容器缺lesscurl或wget ,你可以在Bash中使用这个技巧:
if ( exec 2>/dev/null ; echo > /dev/tcp/169.254.169.254/80 ) ; then echo "AWS" fi
例如:
curl -i http://169.254.169.254/ | grep "200 OK"
文档: http : //docs.aws.amazon.com/AWSEC2/latest/UserGuide/identify_ec2_instances.html
检查您是否在AWS上运行的粗略方法。 在AWS上运行的所有实例都可以访问IP: 169.254.169.254
的内部元数据服务器。 如果你可以连接到它,那么你在AWS上。 否则,你不是。
$ curl -s --connect-timeout 2 169.254.169.254 > /dev/null $ echo $? 0
在非AWS机器上:
$ curl -s --connect-timeout 2 169.254.169.254 > /dev/null $ echo $? 28