2017-07-18 67 views
1

我想从我的Docker容器中使用安全VPC安全地从S3中获取配置文件。但我想在应用程序内部确定哪个配置文件要根据我所在的区域来获取和使用。继续描述当前集装箱的区域是否有一个好的/最佳的做法?自我描述ECS/EC2实例的区域

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

回答

2

在EC2中,您可以使用简单的curl命令将实例元数据检索到本地(内部)Web API。地区和亚利桑那州的一些数据点就可以得到:

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

有关实例元数据的全部细节见this page

在ECS内部,我有兴趣看看它们是否仍然有效 - 我的预感是它们会,因为容器应该查询主机的API以获得答案,而ECS主机肯定是EC2实例。

让我们知道这是否有效?

+1

感谢您的回答,我意识到这一点很好,但不知道是否会容器内工作。将更新! – Serey

3

使用metadata server来查询availability-zone,从中您可以得到region。如果你正在使用Python SDK

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

一个例子是:

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 
+0

你不需要这种方法的boto3。 – Robert

+0

@Robert你是对的。我复制粘贴它从我的测试代码。删除了对'boto3'的引用 – helloV

+1

我可以确认它仍然可以在ECS中的Docker容器内工作 – Serey