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

Amazon web services 从Docker容器中检测AWS主机环境,amazon-web-services,docker,amazon-ec2,containers,Amazon Web Services,Docker,Amazon Ec2,Containers,在Docker容器中,如何检测到我正在AWS环境中运行?如果在AWS中运行,我希望相同的容器在启动时选择性地执行一些AWS命令,但是如果在本地环境中运行,则跳过这些命令 目前,我认为最简单的方法是在AWS中运行时设置环境变量 还有别的办法吗?例如: curl -i http://169.254.169.254/ | grep "200 OK" 文档:检查是否在AWS上运行的粗略方法。AWS上运行的所有实例都可以通过IP访问内部元数据服务器:169.254.169.254。如果你能连接到它,那么

在Docker容器中,如何检测到我正在AWS环境中运行?如果在AWS中运行,我希望相同的容器在启动时选择性地执行一些AWS命令,但是如果在本地环境中运行,则跳过这些命令

目前,我认为最简单的方法是在AWS中运行时设置环境变量

还有别的办法吗?

例如:

curl -i http://169.254.169.254/ | grep "200 OK"

文档:

检查是否在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

如果Docker容器缺少curlwget,则可以在Bash中使用以下技巧:

if ( exec 2>/dev/null ; echo > /dev/tcp/169.254.169.254/80 ) ; then
   echo "AWS"
fi

看,没错。非常感谢。