2017-07-18 82 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