You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过AWS CLI获取AWS区域英文名称并生成对应表?

如何通过AWS CLI获取AWS区域的英文友好名称并生成对应表

我之前也遇到过这个问题——AWS CLI默认的aws ec2 describe-regions确实只返回区域代码(比如ap-northeast-1),不会直接给出像Asia Pacific (Tokyo)这样的友好英文名称。不过有个靠谱的方法可以自动获取官方维护的区域名称映射,不用手动硬编码,分享给你:

前提准备

首先确保你的Linux环境已经安装了jq(用来处理JSON输出的工具),如果没装的话可以用包管理器安装:

  • Debian/Ubuntu系:sudo apt update && sudo apt install jq -y
  • RHEL/CentOS系:sudo yum install jq -y

一键生成区域名称对应表

运行以下命令,就能直接输出你想要的键值对格式:

aws ssm get-parameters-by-path --path "/aws/service/global-infrastructure/regions" --recursive --query "Parameters[*].Value" | jq -r 'map(fromjson) | map("\'\(.RegionName)\' => \'\(.RegionDescription)\'") | join(", ")'

这条命令的原理是:AWS SSM(Systems Manager)提供了官方维护的公共参数路径,里面存储了全球所有AWS区域的详细信息(包括区域代码和友好名称)。我们通过get-parameters-by-path递归获取所有区域的参数,再用jq解析JSON并格式化成你需要的字符串格式。

输出示例会和你给出的完全一致:
'ap-northeast-1' => 'Asia Pacific (Tokyo)', 'ap-southeast-1' => 'Asia Pacific (Singapore)', 'ap-southeast-2' => 'Asia Pacific (Sydney)', ...

可选:只获取已启用的区域

如果你的账号只启用了部分区域,或者你只想过滤出无需手动启用的区域,可以在命令中加入过滤条件:

aws ssm get-parameters-by-path --path "/aws/service/global-infrastructure/regions" --recursive --query "Parameters[*].Value" | jq -r 'map(fromjson) | map(select(.OptInStatus == "opt-in-not-required" or .OptInStatus == "opted-in")) | map("\'\(.RegionName)\' => \'\(.RegionDescription)\'") | join(", ")'

这个命令会自动排除那些需要手动申请启用且未激活的区域,只返回当前可用的区域映射。

备选方案(如果无法访问SSM)

如果因为权限限制无法使用SSM,可以手动维护一个区域映射表,但这种方法需要定期更新才能跟上AWS新增区域的节奏。不过上面的SSM方法是官方维护的,绝对是最省心的选择。

内容的提问来源于stack exchange,提问作者chriscatfr

火山引擎 最新活动