Alibabacloud Sdk Client Initialization For Golang — Alibaba Cloud SDK 客户端初始化(适用于 Golang)
v2在 Go 中初始化和管理 Alibaba Cloud SDK 客户端。涵盖 sync.Once 单例、goroutine 安全性、端点与区域配置、VPC 端点以及调试模式。当用户创建 Go SDK 客户端、配置端点、询问 goroutine 安全性、单例模式或 VPC 端点设置时使用。
运行时依赖
安装命令
点击复制技能文档
客户端初始化最佳实践(Go) 核心规则 客户端是goroutine安全的——可以在不需要额外同步的情况下跨goroutine共享。 使用单例模式——不要为每个请求创建新的客户端实例。 频繁创建客户端会浪费资源。 更喜欢显式端点而不是基于区域的端点解析。 推荐的客户端创建
端点配置 优先级:显式端点 > 基于区域的解析 // 首选:显式端点配置 config.Endpoint = tea.String("ecs.cn-hangzhou.aliyuncs.com") // 替代:SDK 从 RegionId 解析端点 config.RegionId = tea.String("cn-hangzhou") VPC 端点 在 Alibaba Cloud VPC 内运行时使用 VPC 端点: config.Endpoint = tea.String("ecs-vpc.cn-hangzhou.aliyuncs.com") 文件上传 API(高级) 为文件上传 API 设置 RegionId 和 Endpoint 为同一区域: config.RegionId = tea.String("cn-shanghai") config.Endpoint = tea.String("objectdet.cn-shanghai.aliyuncs.com") // VPC 文件上传授权: client.OpenPlatformEndpoint = tea.String("openplatform-vpc.cn-shanghai.aliyuncs.com") client.EndpointType = tea.String("internal") SDK 组件 组件描述 Core SDK(darabonba-openapi)通用调用,无产品依赖 产品 SDK(例如 ecs-20140526)类型客户端,模型,方便方法 调试 通过环境变量启用调试模式以记录所有请求: export DEBUG=teaimport ( "os" "sync" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" ecs "github.com/alibabacloud-go/ecs-20140526/v3/client" "github.com/alibabacloud-go/tea/tea" )var ( ecsClient ecs.Client ecsClientOnce sync.Once )
func GetEcsClient() ecs.Client { ecsClientOnce.Do(func() { config := &openapi.Config{ AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")), AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")), Endpoint: tea.String("ecs.cn-hangzhou.aliyuncs.com"), } var err error ecsClient, err = ecs.NewClient(config) if err != nil { panic(err) } }) return ecsClient }