本文介紹如何使用Go SDK V2查詢所有支援地區或者指定地區對應的Endpoint資訊,包括外網訪問(IPv4)Endpoint、內網訪問(傳統網路或VPC網路)Endpoint和傳輸加速網域名稱(全地區上傳下載加速)Endpoint。
注意事項
查詢所有支援地區或者指定地區對應的Endpoint資訊與OSS的地區支援情況相關,與您在該地區是否建立Bucket無關。
本文範例程式碼以華東1(杭州)的地區ID
cn-hangzhou
為例,預設使用外網Endpoint,如果您希望通過與OSS同地區的其他阿里雲產品訪問OSS,請使用內網Endpoint。關於OSS支援的Region與Endpoint的對應關係,請參見OSS地區和訪問網域名稱。本文以從環境變數讀取存取憑證為例。如何配置訪問憑證,請參見配置訪問憑證。
查詢所有支援地區對應的Endpoint資訊
以下代碼用於查詢所有支援地區對應的Endpoint資訊。
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// 定義全域變數用於儲存命令列參數
var (
region string
)
// init函數用於初始化命令列參數解析器,並為每個參數設定預設值與協助資訊
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located. Required.")
}
func main() {
// 解析命令列參數
flag.Parse()
// 檢查必填參數:region是否為空白
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// 載入預設配置並設定憑證提供者(從環境變數中讀取)和指定地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 建立查詢所有地區的請求
request := &oss.DescribeRegionsRequest{}
// 發送查詢所有地區的請求
result, err := client.DescribeRegions(context.TODO(), request)
if err != nil {
log.Fatalf("failed to describe regions %v", err)
}
// 列印查詢結果
for _, region := range result.RegionInfoList.RegionInfos {
// 列印地區資訊,對應的公網訪問網域名稱、內網訪問網域名稱和加速訪問網域名稱
log.Printf("region:%s, public endpoint:%s, internal endpoint:%s, acceleration endpoint:%s\n", *region.Region, *region.InternetEndpoint, *region.InternalEndpoint, *region.AccelerateEndpoint)
}
}
查詢指定地區對應的Endpoint資訊
以下代碼用於查詢指定地區對應的Endpoint資訊。
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// 定義全域變數用於儲存命令列參數
var (
region string
)
// init函數用於初始化命令列參數解析器,並為每個參數設定預設值與協助資訊
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located. Required.")
}
func main() {
// 解析命令列參數
flag.Parse()
// 檢查必填參數:region是否為空白
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// 載入預設配置並設定憑證提供者(從環境變數中讀取)和指定地區
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// 建立OSS用戶端
client := oss.NewClient(cfg)
// 建立查詢所有地區的請求
request := &oss.DescribeRegionsRequest{
Regions: oss.Ptr("oss-cn-hangzhou"), // 以華東1(杭州)為例,填寫為oss-cn-hangzhou。其它Region請按實際情況填寫
}
// 發送查詢所有地區的請求
result, err := client.DescribeRegions(context.TODO(), request)
if err != nil {
log.Fatalf("failed to describe regions %v", err)
}
// 列印查詢結果
for _, region := range result.RegionInfoList.RegionInfos {
// 列印地區資訊,對應的公網訪問網域名稱、內網訪問網域名稱和加速訪問網域名稱
log.Printf("region:%s, public endpoint:%s, internal endpoint:%s, acceleration endpoint:%s\n", *region.Region, *region.InternetEndpoint, *region.InternalEndpoint, *region.AccelerateEndpoint)
}
}
相關文檔
關於查詢地區對應Endpoint資訊的API介面描述,請參見DescribeRegions。