调用AWS Account API ListRegions未设区域报错,AWS CLI却正常
问题解决:调用AWS Account ListRegions API时的MissingRegion错误
原因分析
AWS CLI执行aws account list-regions时,会自动将全局服务的默认区域设为us-east-1,所以无需手动指定也能正常请求。但Go SDK不会自动处理这个逻辑,必须显式配置区域才能初始化客户端,这就是你遇到报错的核心原因。
解决方案
Account服务属于AWS全局服务,API端点固定在us-east-1,只需在创建Session或客户端时指定该区域即可解决问题。
修正后的代码示例
accountId := "xxxxxxxxxxxxxxxx" input := &account.ListRegionsInput{ AccountId: &accountId, } // 创建Session时指定us-east-1区域 mySession, err := session.NewSession(&aws.Config{ Credentials: creds, Region: aws.String("us-east-1"), // 新增区域配置 }) if err != nil { fmt.Printf("Session creation error: %v\n", err) return } // 注意:原代码中ac.session应为mySession,修正变量名一致性 acClient1 := account.New(mySession) regions, err := acClient1.ListRegions(input) if err != nil { fmt.Printf("Error: %v\n", err) } fmt.Printf("Regions: %v\n", regions)
补充说明
- 所有AWS全局服务(如Account、IAM、Organizations等)的API端点默认使用
us-east-1,调用这类服务的SDK时必须显式指定该区域。 - 原代码存在变量名错误:
account.New(ac.session)中的ac.session应为你定义的mySession,需保证变量引用一致。
内容的提问来源于stack exchange,提问作者pavan kumar
相关产品推荐
相关产品推荐

