このトピックでは、Go SDK V2 を使用して、サポートされているすべてのリージョンまたは特定のリージョンのエンドポイント情報をクエリする方法について説明します。この情報には、パブリックエンドポイント (IPv4)、内部エンドポイント (クラシックネットワークまたは VPC)、およびアクセラレーションエンドポイント (グローバルアップロードおよびダウンロードアクセラレーション) が含まれます。
使用上の注意
そのリージョンにバケットを作成したかどうかに関係なく、サポートされているすべてのリージョンまたは特定のリージョンのエンドポイント情報をクエリできます。
このトピックのサンプルコードでは、中国 (杭州) リージョンのリージョン ID
cn-hangzhouを例として使用します。デフォルトでは、パブリックエンドポイントが使用されます。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS がサポートするリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。このトピックの例では、環境変数からアクセス資格情報を取得する方法を示します。アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
サポートされているすべてのリージョンのエンドポイントのクエリ
次のコードは、サポートされているすべてのリージョンのエンドポイント情報をクエリする方法の例を示しています。
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)
}
}
特定リージョンのエンドポイントのクエリ
次のコードは、特定のリージョンのエンドpoint情報をクエリする方法の例を示しています。
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"), // 中国 (杭州) リージョンを例として使用します。値を oss-cn-hangzhou に設定します。他のリージョンについては、実際の値を指定してください。
}
// すべてのリージョンをクエリするリクエストを送信します。
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)
}
}
参考
エンドポイント情報をクエリするために使用される API 操作の詳細については、「DescribeRegions」をご参照ください。