dan*_*aur 133
该URL(http://169.254.169.254/latest/dynamic/instance-identity/document)似乎不再起作用.当我尝试使用它时,我得到了404.我有以下代码似乎工作:
EC2_AVAIL_ZONE=`curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone`
EC2_REGION="`echo \"$EC2_AVAIL_ZONE\" | sed 's/[a-z]$//'`"
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
编辑:sed根据评论改进
小智 80
还有一种方法可以实现:
REGION=`curl http://169.254.169.254/latest/dynamic/instance-identity/document|grep region|awk -F\" '{print $4}'`
echo $REGION
us-east-1
Run Code Online (Sandbox Code Playgroud)
小智 35
如果使用正常jq,可以运行以下命令:
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | jq .region -r
Run Code Online (Sandbox Code Playgroud)
我想这是最干净的方式.
Jos*_*ban 26
ec2-metadata --availability-zone | sed 's/.$//'
Run Code Online (Sandbox Code Playgroud)
Dan*_*itz 18
您可以使用ec2-metadata:
ec2-metadata -z | grep -Po "(us|sa|eu|ap)-(north|south|central)?(east|west)?-[0-9]+"
Run Code Online (Sandbox Code Playgroud)
Jae*_*hun 17
如果你想避免使用正则表达式,这里有一个你可以用Python做的单行程:
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | python -c "import json,sys; print json.loads(sys.stdin.read())['region']"
Run Code Online (Sandbox Code Playgroud)
Fra*_*zzi 15
到目前为止我找到的最容易
curl -s 169.254.169.254/latest/meta-data/placement/availability-zone | sed 's/.$//'
Run Code Online (Sandbox Code Playgroud)
小智 13
非常简单的一个班轮
export AVAILABILITY_ZONE=`wget -qO- http://instance-data/latest/meta-data/placement/availability-zone`
export REGION_ID=${AVAILABILITY_ZONE:0:${#AVAILABILITY_ZONE} - 1}
Run Code Online (Sandbox Code Playgroud)
在某些时候,由于大多数这些答案已经发布,AWS 做了合理的事情并实施了一条新路径:latest/meta-data/placement/region.
这意味着获取区域应该很简单
REGION="$(wget -q -O - http://169.254.169.254/latest/meta-data/placement/region)"
Run Code Online (Sandbox Code Playgroud)
编辑:可能还值得一提的是,该端点在元数据 API 的 2019-10-01 版本中可用。确保您的实例在使用此版本之前支持该版本或更高版本,请检查http://169.254.169.254/。
如果安装了jq,则还可以通过以下方式进行处理(可能是最“优雅”的方法):
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | jq -c -r .region
Run Code Online (Sandbox Code Playgroud)
这只是返回“区域”的原始值,而无需任何漂亮的印刷或其他格式。参考:AWS论坛
小智 6
从可用区域获取该区域,剥去它的最后一个字母.
ec2-metadata -z | awk '{print $2}' | sed 's/[a-z]$//'
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您使用 json - 使用正确的工具。jq 在这种情况下非常强大。
# curl -s curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.region'
eu-west-1
Run Code Online (Sandbox Code Playgroud)
使用JQ:
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | jq -r .region
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83235 次 |
| 最近记录: |