Go查询Endpoint信息

更新时间:2025-02-21 03:20:27

本文介绍如何使用Go SDK V2查询所有支持地域或者指定地域对应的Endpoint信息,包括外网访问(IPv4)Endpoint、内网访问(经典网络或VPC网络)Endpoint和传输加速域名(全地域上传下载加速)Endpoint。

注意事项

  • 查询所有支持地域或者指定地域对应的Endpoint信息与OSS的地域支持情况相关,与您在该地域是否创建Bucket无关。

  • 本文示例代码以华东1(杭州)的地域IDcn-hangzhou为例,默认使用外网Endpoint,如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的RegionEndpoint的对应关系,请参见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(&region, "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(&region, "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

  • 本页导读 (1)
  • 注意事项
  • 查询所有支持地域对应的Endpoint信息
  • 查询指定地域对应的Endpoint信息
  • 相关文档