gyr*_*yre 5 amazon-web-services aws-sdk aws-sdk-go
AWS从Go SDK V2endpoints中删除了软件包。有没有办法使用 Go SDK V2 获取 AWS 区域列表?
在 V1 中你可以这样写:
import "github.com/aws/aws-sdk-go/aws/endpoints"
...
...
partitions := endpoints.DefaultPartitions()
for _, p := range partitions {
for region := range p.Regions() {
validRegions[region] = struct{}{}
}
}
...
...
Run Code Online (Sandbox Code Playgroud)
然而,这似乎不再可能了。我确实注意到一个自动生成的json似乎包含所有分区,但是我似乎无法弄清楚如何获取代码中的可用区域列表。
Go SDK V2 有办法做到这一点吗?
小智 0
一种选择是获取您提到的 JSON,例如:
// endpoints holds the aws generated endpoints.json
type endpoints struct {
Partitions []Partition `json:"partitions"`
}
type Partition struct {
PartitionName string `json:"partitionName"`
Regions map[string]interface{} `json:"regions"`
Services map[string]Service `json:"services"`
}
type Service struct {
Endpoints map[string]interface{} `json:"endpoints"`
}
func main() {
fmt.Println("Generating AWS regions")
resp, err := http.Get("https://raw.githubusercontent.com/aws/aws-sdk-go-v2/master/codegen/smithy-aws-go-codegen/src/main/resources/software/amazon/smithy/aws/go/codegen/endpoints.json")
if err != nil {
fmt.Fprintln(os.Stderr, err.Error())
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Fprintln(os.Stderr, err.Error())
}
e := endpoints{}
err = json.Unmarshal(body, &e)
if err != nil {
fmt.Fprintln(os.Stderr, err.Error())
}
// do something with e
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2250 次 |
| 最近记录: |