在AWS中查找我的实例区域

时间:2013-08-01 16:36:29

标签: php ubuntu amazon-web-services ubuntu-12.04

鉴于以下参数:

  1. 在任何位置运行的Ubuntu实例(该区域中的任何区域和任何可用区域)
  2. 仅在实例上安装AWS PHP SDK2(没有其他EC2命令行工具等)
  3. CURL和WGET可用
  4. 实例脚本最明确地确定运行哪个Region的方式是什么?

    * **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作业和其他自定义服务可以确定它们的位置和位置,以便它们可以适当地与其他服务和实例进行交互。

3 个答案:

答案 0 :(得分:5)

这应该适合你:

REGION=`curl -s http://169.254.169.254/latest/dynamic/instance-identity/document|grep region|awk -F\" '{print $4}'`

echo $REGION

来自这个帖子:

Find region from within an EC2 instance

答案 1 :(得分:1)

使用PHP SDK,您可以执行以下操作:

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

echo $instance['region'];

答案 2 :(得分:0)

正如我在另一个问题上已经回答的那样,AWS已实施一种干净的方法来从元数据服务器确定您的区域:

REGION="$(wget -q -O - http://169.254.169.254/latest/meta-data/placement/region)"

REGION="$(curl http://169.254.169.254/latest/meta-data/placement/region)

这将要求使用2019-10-01或更高版本的元数据API。通过点击根端点并在输出中检查它来确保可用。

My original answer