使用 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
相關文章
- 獲取BT節點資訊bittorrent-discovery
- 如何獲取終端使用者的真實ip
- jquery獲取元素節點jQuery
- jquery獲取指定節點的第一級文字節點jQuery
- 微博app端使用者資訊獲取方法探究APP
- jQuery如何獲取元素父節點和子節點jQuery
- 使用 javascript 獲取瀏覽器(或 WKWebView)的安全區資訊JavaScript瀏覽器WebView
- 獲取所有域使用者的登陸歷史資訊指令碼指令碼
- js獲取dom節點的方法有哪些JS
- jQuery獲取節點的標籤名稱jQuery
- JQuery2:節點選取與節點插入jQuery
- 【iOS開發】獲取區域網IPiOS
- golang aws-sdk-go 之 s3 服務GolangS3
- 如何使用 Go 獲取你的 IP 地址Go
- JavaScript 獲取所有後代元素節點JavaScript
- JavaScript獲取父元素下子元素節點JavaScript
- js獲取節點元素物件的方法介紹JS物件
- PHP獲取客戶端、PHP獲取伺服器相關資訊PHP客戶端伺服器
- 安卓sdk webview獲取淘寶個人資訊100項,原始碼。安卓WebView原始碼
- 解析域名,獲取域名ip並輸出到終端
- 獲取頁面中所有元素的節點型別型別
- 1.19 JQuery2:節點插入與節點選取jQuery
- 前端獲取不到後端新增的請求頭資訊前端後端
- Linux獲取10個你最常用的終端命令列表Linux命令列
- 使用PHP獲取影像檔案的EXIF資訊PHP
- 【Python】獲取機器使用資訊Python
- 獲取行政區劃資訊(省、市)工具類
- Java知識點總結(反射-獲取類的資訊)Java反射
- 獲取當前元素在兄弟元素節點中的索引索引
- 封裝js獲取當前元素的弟弟元素節點封裝JS
- jquery獲取指定元素的父節點程式碼例項jQuery
- 【Go】獲取使用者真實的ip地址Go
- 【Go】獲取使用者真實的 ip 地址Go
- 替歸演算法獲取Treeview所有節點演算法View
- JavaScript獲取HTML DOM節點元素詳解(轉)JavaScriptHTML
- 平衡資訊系統終端使用者的需求
- sql server 樹狀結構表中,獲取指定節點的所有父節點路徑SQLServer
- 再探go modules:使用與細節Go