2013-08-01 52 views
3

考慮到這些參數:查找我的實例區在AWS

  1. (任何區域,並在該地區的任何可用區域)
  2. 只有AWS PHP SDK2安裝在實例中的任何地方運行一個Ubuntu實例(沒有其他的EC2命令行工具等)
  3. 捲曲和可用WGET

什麼是一個實例腳本明確determin最優雅的方式它在哪個區域運行?

* **Instance ID:** wget -q -O - http://169.254.169.254/latest/meta-data/instance-id 
* **Availability Zone:** wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone 

meta-data does not目前提供這些信息。

我們知道,目前,尾隨字符可以從可用區域中剝離出來,以便天真地確定區域,但是,亞馬遜未來將不會更改no guarantee

最終目標是我們的cron作業和其他自定義服務可以找出他們是誰和他們在哪裏,以便他們可以與其他服務和實例進行適當的交互。

回答

1

使用PHP SDK,你可以做到以下幾點:

$instance = \Aws\Common\InstanceMetadata\InstanceMetadataClient::factory() 
    ->get('dynamic/instance-identity/document') 
    ->send() 
    ->json(); 

echo $instance['region']; 
+0

默認SDK被加載,但我得到未捕獲的錯誤:類'Aws \ Common \ InstanceMetadata \ InstanceMetadataClient'未找到 示例錯過了某些內容。 – John