获取AWS Regions

时间:2018-04-08 09:44:00

标签: bash amazon-web-services aws-cli

我找不到使用AWS CLI检索区域的英文名称的方法。 有什么想法吗?

我需要在Linux中的命令行输出中生成以下所有AWS区域的英文名称表。

'ap-northeast-1' => 'Asia Pacific (Tokyo)',
'ap-southeast-1' => 'Asia Pacific (Singapore)',
'ap-southeast-2' => 'Asia Pacific (Sydney)',
'eu-central-1'   => 'EU (Frankfurt)',
'eu-west-1'      => 'EU (Ireland)',
'sa-east-1'      => 'South America (Sao Paulo)',
'us-east-1'      => 'US East (N. Virginia)',
'us-east-2'      => 'US East (Ohio)',
'us-west-1'      => 'US West (N. California)',
'us-west-2'      => 'US West (Oregon)',
'eu-west-2'      => 'EU (London)',
'ca-central-1'   => 'Canada (Central)',
'sa-east-1'      => 'South America (Sao Paulo)',

我不是Linux VM的管理员,也无法安装Java。

3 个答案:

答案 0 :(得分:2)

基于@ jarmod的评论如何做到这样:

<强>功能:

  1. 从AWS文档中提取html页面;将输出传递给下一个命令。
  2. 将RegionName代码与html中的一行匹配,并将接下来的5行传递给下一个命令。
  3. 找到具有该区域的人类可读名称的行。
  4. 将代码和名称打印在一行中。
  5. 示例代码:

    function getAWSRegionName {
            tmp=$(wget -qO- https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html | awk -v pat="<p><code class=\"code\">$1" '$0 ~ pat {for(i=0; i<5; i++) {getline; print}}' | awk -F'[<|>]' '/<p>|<\/p>/ {print $3}')
            echo "$1 = $tmp";
    }
    
    
    
    for code in `aws ec2 describe-regions | awk -F'"' '/RegionName/{print $4}'`; do
            getAWSRegionName $code;
    done
    

    <强>结果:

    code-run-result

答案 1 :(得分:2)

也遇到了此问题,发现this AWS article说您可以使用AWS Parameter Store查询所有类型的数据。经过一点挖掘后,使用AWS CLI找到了该解决方案

region=us-east-1
aws ssm get-parameter --name /aws/service/global-infrastructure/regions/$region/longName --query "Parameter.Value" --output text

答案 2 :(得分:0)

我有一个类似的问题,使用下面的代码解决了这个问题:

REGION_TARGET=us-east-1
region_name=$(wget -qO- https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html\#concepts-available-regions | awk NF | awk -v pat="<p><code class=\"code\">$TARGET_REGION" '$0 ~ pat {for(i=0;i<5;i++) {getline; print}}' | awk -F'[<|>]' '/<p>|<\/p>/ {print $3}');