从Docker容器中检测AWS主机环境

从Docker容器中,我如何检测到我在AWS环境中运行? 我希望相同的容器可以select性地在AWS内启动IF时运行一些AWS命令,但是如果在本地环境中运行,则跳过这些命令。

目前,我认为简单的方法是在AWS中运行时设置一个环境variables。

有另一种方法吗?

如果你的Docker容器缺lesscurlwget ,你可以在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