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,如果不設定,則使用預設的公網服務地址。它底層商務邏輯是調用檔案上傳鑒權服務,擷取鑒權和預設Object Storage Service的相關資訊。
上傳檔案鑒權服務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。