Endpoint是请求接口服务的网络域名,如产品ECS的某个Endpoint:ecs.cn-hangzhou.aliyuncs.com。每个产品都有其独立的Endpoint,并且Endpoint与服务区域RegionId有关,不同地域可能是不同的 Endpoint。本文为您介绍V2.0 Go SDK对于Endpoint的配置。
Endpoint设置
V2.0 SDK提供了两种Endpoint设置方式,下面按优先级排列:
自定义Endpoint:用户可以通过在初始化客户端时指定Endpoint,产品的Endpoint可以通过OpenAPI 开发者门户的产品主页中查找,具体参考文末。
func main() { config := &openapi.Config{ // 省略凭证配置 // 访问的 Endpoint Endpoint: tea.String("<endpoint>"), } client, _err = ecs20140526.NewClient(config) }
自定义RegionId:
若请求的产品SDK中存在RegionId和Endpoint关系对象,且传入的RegionId在该对象中时,则从关系对象中获取Endpoint。
若请求的产品SDK没有RegionId和Endpoint关系对象,或者传入的RegionId不在关系对象中时,则根据拼接规则自动拼接Endpoint。
func main() { config := &openapi.Config{ // 省略凭证配置 // 访问的 Region RegionId: tea.String("<RegionId>"), } client, _err := ecs20140526.NewClient(config) }
VPC Endpoint使用场景
使用阿里云SDK方式调用OpenAPI时,若业务场景有以下需求,建议设置阿里云VPC Endpoint:
业务系统同时存在于本地机房和云上机房,基于阿里云VPC搭建不同的业务模块,构建完全隔离的云上环境,云上云下通过公网进行业务交互。
基于阿里云VPC搭建云上数据中心,通过专线与云下内部数据中心打通,进行用户核心数据安全保障,完美应对业务激增及数据快速同步,实现混合云方案。
基于阿里云VPC搭建多个应用,各应用都需要对外提供服务,且其波峰时间点不一致,希望多IP共享带宽,尽量减小波峰波谷效应从而降低成本。
云上业务完全基于VPC构建,用户遍布各个区域,为提升用户访问速度,业务系统同样位于不同节点,需实现各节点之间的网络高速互联。
获取文件上传授权码的Endpoint
部分OpenAPI支持设置开放平台Endpoint,如果不设置,则使用默认的公网服务地址。它底层业务逻辑是调用文件上传鉴权服务,获取鉴权和默认对象存储(OSS)的相关信息。
上传文件鉴权服务Endpoint,您可以在VPC环境配置VPC Endpoint来请求上传文件的鉴权信息。
// 省略凭证配置package main import ( "encoding/json" "fmt" "os" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" facebody20191230 "github.com/alibabacloud-go/facebody-20191230/v4/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" ) func main() { config := &openapi.Config{ // 省略凭证配置 // 访问的 Region RegionId: tea.String("<RegionId>"), // 根据 regionId 设置 VPC 请求的地址 OpenPlatformEndpoint: tea.String("openplatform-vpc.cn-shanghai.aliyuncs.com"), } client, err := facebody20191230.NewClient(config) if err != nil { panic(err) } f, err := os.Open("本地文件路径") if err != nil { panic(err) } request := &facebody20191230.DetectBodyCountAdvanceRequest{} request.SetImageURLObject(f) // 创建RuntimeObject实例并设置运行参数。 runtime := &util.RuntimeOptions{} runtime.ReadTimeout = tea.Int(10000) resp, err := client.DetectBodyCountAdvance(request, runtime) if err != nil { panic(err) } // response 包含服务端响应的 body 和 headers body, err := json.Marshal(resp.Body) if err != nil { panic(err) } headers, err := json.Marshal(resp.Headers) if err != nil { panic(err) } fmt.Printf("body: %s\n", string(body)) fmt.Printf("header: %s\n", string(headers)) }
上传文件鉴权服务的Endpoint,您可以在VPC或者内网环境配置VPC Endpoint来请求上传文件的鉴权信息。
package main import ( "encoding/json" "fmt" "os" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" facebody20191230 "github.com/alibabacloud-go/facebody-20191230/v4/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" ) func main() { config := &openapi.Config{ // 省略凭证配置 // 访问的 Region RegionId: tea.String("<RegionId>"), // 根据 regionId 设置 VPC 请求的地址 OpenPlatformEndpoint: tea.String("openplatform-vpc.cn-shanghai.aliyuncs.com"), // 根据 regionId 设置 OSS 请求的地址,internal:vpc 和经典网络、accelerate: 国外加速域名 EndpointType: tea.String("internal"), } client, err := facebody20191230.NewClient(config) if err != nil { panic(err) } f, err := os.Open("本地文件路径") if err != nil { panic(err) } request := &facebody20191230.DetectBodyCountAdvanceRequest{} request.SetImageURLObject(f) // 创建RuntimeObject实例并设置运行参数。 runtime := &util.RuntimeOptions{} runtime.ReadTimeout = tea.Int(10000) resp, err := client.DetectBodyCountAdvance(request, runtime) if err != nil { panic(err) } // response 包含服务端响应的 body 和 headers body, err := json.Marshal(resp.Body) if err != nil { panic(err) } headers, err := json.Marshal(resp.Headers) if err != nil { panic(err) } fmt.Printf("body: %s\n", string(body)) fmt.Printf("header: %s\n", string(headers)) }
附:Endpoint查找方式
产品的Endpoint可以通过在OpenAPI门户上寻找:
在门户顶部菜单选择云产品,例如ECS:
2. 在云产品主页找到服务区域列表:
3. 选择相应RegionId所对应的Endpoint,进行复制粘贴即可。
还可以在API调试界面,在左侧栏单击服务区域,查看云产品支持的Endpoint。