自我描述具有ECS / EC2实例的区域

我想从我的Docker容器使用安全的VPC安全地从S3获取configuration文件。 但是我想在应用程序里面确定哪个configuration文件要根据我所在的区域来获取和使用。 是否有一个好的/最好的做法来继续描述当前的集装箱的地区?

我知道您可以使用AWS开发工具包/ CLI来描述ECS实例,但是不会告诉我哪个容器是专门部署的。

在EC2中,您可以使用简单的curl命令将实例元数据检索到本地(内部)Web API。 Region和AZ是你可以得到的一些数据点:

http://169.254.169.254/latest/meta-data/services/domain http://169.254.169.254/latest/meta-data/placement/availability-zone 

有关实例元数据的完整详细信息,请参阅此页

在ECS内部,我有兴趣看看这些东西是否仍然有效 – 我的直觉是他们会的,因为容器应该查询主机的API来得到答案,而ECS主机肯定是一个EC2实例。

让我们知道这是否有效?

使用metadata server查询您可以从中获得regionavailability-zone region

 $ curl 169.254.169.254/latest/meta-data/placement/availability-zone/ us-east-1a 

一个例子,如果你使用的是Python SDK:

 import os az = os.popen("curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone/").read() print az[:-1] >>> us-east-1