当前位置: > > > > 是否有 Amazon API 可以获取 Nice 区域名称而不是 us-west1?
是否有 Amazon API 可以获取 Nice 区域名称而不是 us-west1?
来源:stackoverflow
2024-04-19 22:30:29
0浏览
收藏
“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《是否有 Amazon API 可以获取 Nice 区域名称而不是 us-west1?》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!
问题内容
我正在使用以下 api 来检索亚马逊区域列表。
但是,它基本上将区域返回为“us-west1、us-west2”等。有没有办法从 api 获取区域名称,并输出诸如“美国西部(加利福尼亚北部)”、“美国西(俄勒冈州)”?
// Get a list of regions from our default region
svc := ec2.NewFromConfig(cfg)
result, err := svc.DescribeRegions(context.TODO(), &ec2.DescribeRegionsInput{})
if err != nil {
return nil, err
}
var regions []portaineree.Pair
for _, region := range result.Regions {
fmt.Println("region.Name=", *region.RegionName)
// do something with region...
}
正确答案
您可以使用 ssm 代理获取区域列表,并提取每个区域的长名称:
package main
import (
"log"
"strings"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/ssm"
)
func main() {
// build a aws ssm agent
sess := session.must(session.newsessionwithoptions(session.options{
sharedconfigstate: session.sharedconfigenable,
}))
// we're requesting global data, the region doesn't matter
svc := ssm.new(sess, &aws.config{region: aws.string("us-east-1")})
var nexttoken *string
for {
// request all regions, paginating the results if needed
var input = &ssm.getparametersbypathinput{
path: aws.string("/aws/service/global-infrastructure/regions"),
nexttoken: nexttoken,
}
var output, err = svc.getparametersbypath(input)
if err != nil {
log.fatal(err)
}
// for each region, get the "longname" for the region
for _, element := range output.parameters {
region := (*element.name)[strings.lastindex(*element.name, "/")+1:]
var regioninfo, err = svc.getparameter(&ssm.getparameterinput{
name: aws.string("/aws/service/global-infrastructure/regions/" + region + "/longname"),
})
if err != nil {
log.fatal(err)
}
regiondesc := *regioninfo.parameter.value
// just output the region and region description
log.println(region, " = ", regiondesc)
}
// pull in the next page of regions if needed
nexttoken = output.nexttoken
if nexttoken == nil {
break
}
}
}
如果可以的话,可以通过 cli 命令轻松完成此操作
region=us-east-1 aws ssm get-parameter --name /aws/service/global-infrastructure/regions/$region/longName --query "Parameter.Value" --output text```
以上就是《是否有 Amazon API 可以获取 Nice 区域名称而不是 us-west1?》的详细内容,更多关于的资料请关注米云公众号!
