首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell从AWS元数据获取区域

Powershell从AWS元数据获取区域
EN

Stack Overflow用户
提问于 2017-08-23 01:16:23
回答 2查看 3.5K关注 0票数 7

我有一个EC2实例,并且我正在运行一个Powershell脚本,我希望在其中获取运行EC2的区域。

目前,我有类似这样的变通方法,它首先获取可用区。可用区的格式类似于'us-east-1a‘。

代码语言:javascript
复制
$region = invoke-restmethod -uri http://169.254.169.254/latest/meta-data/placement/availability-zone 
if ($region -like "*east*") {$region = "us-east-1"} ELSE {$region = "us-west-2"} 

我只想获取区域,而不是获取可用区,然后进行一些修改。我知道有这样一种可能性:

代码语言:javascript
复制
http://169.254.169.254/latest/dynamic/instance-identity/document

这将返回一个包含区域的JSON对象,但我还需要解析JSON才能实现这一点。

如何只获取区域?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-23 02:06:09

这样行得通吗?

代码语言:javascript
复制
PS C:\> $region = invoke-restmethod -uri http://169.254.169.254/latest/meta-data/placement/availability-zone

PS C:\> $region.Substring(0,$region.Length-1)
票数 5
EN

Stack Overflow用户

发布于 2019-05-17 11:11:25

解析可用区并不是最安全的方式。地域名称可作为实例身份文档的属性,该属性在实例启动时生成。使用Powershell有两个选项可以读取此信息:

您可以使用Invoke-WebRequest:

IWR (也称为curlwget)运行良好,但它只能处理超文本标记语言。所以您需要一个额外的步骤来解析JSON。默认情况下,它使用IE接口来解析DOM,但您可以使用-UseBasicParsing选项来避免这种情况。

代码语言:javascript
复制
PS C:\> curl http://169.254.169.254/latest/dynamic/instance-identity/document | ConvertFrom-Json | Select region

region
------
us-east-1

PS C:\> (curl http://169.254.169.254/latest/dynamic/instance-identity/document | ConvertFrom-Json).region
us-east-1

但是Invoke-RestMethod是最好的选择:

由于这是一个REST接口,IRM是最好的选择,因为它本身就支持JSON和XML。

代码语言:javascript
复制
PS C:\> irm http://169.254.169.254/latest/dynamic/instance-identity/document | Select region

region
------
us-east-1

PS C:\> (irm http://169.254.169.254/latest/dynamic/instance-identity/document).region
us-east-1

PS C:\> irm http://169.254.169.254/latest/dynamic/instance-identity/document | % region
us-east-1
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45823518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档