使用 AWS 的 GO SDK 獲取區域與終端節點資訊
LCTT 譯註: 終端節點,詳情請見: http://docs.amazonaws.cn/general/latest/gr/rande.html
最新發布的 GO 的 SDK v1.6.0 版本,加入了獲取區域與終端節點資訊的功能。它可以很方便地列出區域、服務和終端節點的相關資訊。可以透過 github.com/aws/aws-sdk-go/aws/endpoints 包使用這些功能。
endpoints 包提供了一個易用的介面,可以獲取到一個服務的終端節點的 url 列表和區域列表資訊。並且我們將相關資訊根據 AWS 服務區域進行了分組,如 AWS 標準、AWS 中國和 AWS GovCloud(美國)。
解析終端節點
設定 SDK 的預設配置時, SDK 會自動地使用 endpoints.DefaultResolver
函式。你也可以自己呼叫包中的EndpointFor
方法來解析終端節點。
// 解析在us-west-2區域的S3服務的終端節點
resolver := endpoints.DefaultResolver()
endpoint, err := resolver.EndpointFor(endpoints.S3ServiceID, endpoints.UsWest2RegionID)
if err != nil {
fmt.Println("failed to resolve endpoint", err)
return
}
fmt.Println("Resolved URL:", endpoint.URL)
如果你需要自定義終端節點的解析邏輯,你可以實現 endpoints.Resolver
介面,並傳值給aws.Config.EndpointResolver
。當你打算編寫自定義的終端節點邏輯,讓 SDK 可以用來解析服務的終端節點時候,這個功能就會很有用。
以下示例,建立了一個配置好的 Session,然後 Amazon S3 服務的客戶端就可以使用這個自定義的終端節點。
s3CustResolverFn := func(service, region string, optFns ...func(*endpoints.Options)) (endpoints.ResolvedEndpoint, error) {
if service == "s3" {
return endpoints.ResolvedEndpoint{
URL: "s3.custom.endpoint.com",
SigningRegion: "custom-signing-region",
}, nil
}
return defaultResolver.EndpointFor(service, region, optFns...)
}
sess := session.Must(session.NewSessionWithOptions(session.Options{
Config: aws.Config{
Region: aws.String("us-west-2"),
EndpointResolver: endpoints.ResolverFunc(s3CustResolverFn),
},
}))
分割槽
endpoints.DefaultResolver
函式的返回值可以被 endpoints.EnumPartitions
介面使用。這樣就可以獲取 SDK 使用的分割槽片段,也可以列出每個分割槽的分割槽資訊。
// 迭代所有分割槽表列印每個分割槽的ID
resolver := endpoints.DefaultResolver()
partitions := resolver.(endpoints.EnumPartitions).Partitions()
for _, p := range partitions {
fmt.Println("Partition:", p.ID())
}
除了分割槽表之外,endpoints 包也提供了每個分割槽組的 getter 函式。這些工具函式可以方便列出指定分割槽,而不用執行預設解析器列出所有的分割槽。
partition := endpoints.AwsPartition()
region := partition.Regions()[endpoints.UsWest2RegionID]
fmt.Println("Services in region:", region.ID())
for id, _ := range region.Services() {
fmt.Println(id)
}
當你獲取區域和服務值後,可以呼叫 ResolveEndpoint
。這樣解析端點時,就可以提供分割槽的過濾檢視。
獲取更多 AWS SDK for GO 資訊, 請關注其開源倉庫。若你有更好的看法,請留言評論。
via: https://aws.amazon.com/cn/blogs/developer/using-the-aws-sdk-for-gos-regions-and-endpoints-metadata
作者:Jason Del Ponte 譯者:Vic020 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出
相關文章
- 獲取BT節點資訊bittorrent-discovery
- jquery獲取元素節點jQuery
- 使用 javascript 獲取瀏覽器(或 WKWebView)的安全區資訊JavaScript瀏覽器WebView
- 獲取所有域使用者的登陸歷史資訊指令碼指令碼
- 使用捕獲 獲取身份證號的資訊
- 怎樣獲取jstree的節點資料_大資料獲客是怎樣獲取精準客源的JS大資料
- js獲取dom節點的方法有哪些JS
- 【Python】獲取機器使用資訊Python
- spring boot 獲取客戶端ip資訊Spring Boot客戶端
- 如何使用 Go 獲取你的 IP 地址Go
- JQuery2:節點選取與節點插入jQuery
- 透過Python SDK 獲取tushare資料Python
- 使用PHP獲取影像檔案的EXIF資訊PHP
- 前端獲取不到後端新增的請求頭資訊前端後端
- JavaScript 獲取所有後代元素節點JavaScript
- JavaScript獲取父元素下子元素節點JavaScript
- 使用Python獲取ECS相關資訊Python
- 獲取行政區劃資訊(省、市)工具類
- Java知識點總結(反射-獲取類的資訊)Java反射
- 1.19 JQuery2:節點插入與節點選取jQuery
- golang aws-sdk-go 之 s3 服務GolangS3
- 使用URLConnection物件獲取網路資源資訊物件
- 獲取位置資訊
- 在Java中獲取Android端登陸的裝置資訊JavaAndroid
- Linux獲取10個你最常用的終端命令列表Linux命令列
- 網路節點資源獲取共享方面的演算法演算法
- 解析域名,獲取域名ip並輸出到終端
- 獲取微信使用者基本資訊
- SAP ABAP使用CDS獲取系統資訊
- thinkphp6 使用FFMpeg獲取影片資訊PHP
- 安卓sdk webview獲取淘寶個人資訊100項,原始碼。安卓WebView原始碼
- AWS宣佈在香港推出新的區域
- python使用ldap3獲取使用者資訊PythonLDA
- 使用 useNuxtData 進行高效的資料獲取與管理UX
- 使用 C# 獲取 Kubernetes 叢集資源資訊C#
- 【Go】獲取使用者真實的ip地址Go
- 【Go】獲取使用者真實的 ip 地址Go
- Linux時間的獲取與使用Linux
- 如何獲取最新安全資訊與技術