エンドポイントは、Alibaba Cloud サービス API のドメイン名です。たとえば、Elastic Compute Service (ECS) のエンドポイントは ecs.cn-hangzhou.aliyuncs.com です。Alibaba Cloud の各サービスには、固有のエンドポイントがあります。サービスの各エンドポイントは、リージョンによって異なる場合があります。このトピックでは、Go 用 Alibaba Cloud SDK V2.0 でエンドポイントを設定する方法について説明します。
API リクエストの送信先エンドポイントを設定する
Alibaba Cloud SDK V2.0 は、エンドポイントを設定するための 2 つの方法を提供しています。次のセクションでは、優先順位の高い順に方法について説明します。
カスタムエンドポイントを指定します。クライアントを初期化するときに、エンドポイントを指定できます。OpenAPI Explorer でエンドポイントを照会できます。詳細については、このトピックの「付録: エンドポイントを照会する」セクションをご参照ください。
func main() { config := &openapi.Config{ // 認証設定は省略します。 // アクセスするエンドポイント。 Endpoint: tea.String("<endpoint>"), } client, _err = ecs20140526.NewClient(config) }カスタムリージョン ID を指定します。
Alibaba Cloud サービスの SDK にリージョン ID とエンドポイントの関係オブジェクトが含まれており、指定したリージョン ID が関係オブジェクトに含まれている場合は、関係オブジェクトからエンドポイントを取得できます。
Alibaba Cloud サービスの SDK にリージョン ID とエンドポイントの関係オブジェクトが含まれていない場合、または指定したリージョン ID が関係オブジェクトに含まれていない場合は、連結ルールに基づいてエンドポイントが自動的に連結されます。
func main() { config := &openapi.Config{ // 認証設定は省略します。 // アクセスするリージョン。 RegionId: tea.String("<RegionId>"), } client, _err := ecs20140526.NewClient(config) }
VPC エンドポイントが使用されるシナリオ
Alibaba Cloud SDK を使用して API オペレーションを呼び出し、ビジネスに次の要件がある場合は、VPC エンドポイントを設定することをお勧めします。
ビジネスシステムは、オンプレミスデータセンターとクラウドデータセンターの両方にデプロイされています。異なるビジネスモジュールは、VPC ネットワークに基づいて構築され、分離されたクラウド環境を構築します。データセンターはインターネットを介して相互に通信します。
クラウドデータセンターは、VPC ネットワークに基づいてデプロイされます。Express Connect 回線を介してオンプレミスデータセンターと通信し、ハイブリッドクラウド接続を実装します。これにより、コアユーザーデータのセキュリティが確保され、ワークロードの変動への対応と高速なデータ同期に役立ちます。
VPC ネットワークに基づいてデプロイされた複数のアプリケーションが外部サービスを提供する必要があり、アプリケーションのワークロードはさまざまな時点で変動します。この場合、複数の IP アドレスが帯域幅を共有する必要があり、トラフィックの変動を削減してコストを削減する必要があります。
クラウドサービスは、VPC ネットワークに基づいて構築されます。さまざまなリージョンのユーザーのネットワークレイテンシを削減するために、ビジネスシステムは異なるノードにデプロイされます。ユーザーエクスペリエンスを最適化するには、これらのノード間の高帯域幅接続が必要です。
認証情報をリクエストするためのエンドポイントを設定する
一部の API オペレーションは、オープンプラットフォームのエンドポイントを設定するために呼び出すことができます。エンドポイントを設定しない場合は、デフォルトのパブリックエンドポイントが使用されます。エンドポイントを使用してファイルアップロード認証サービスを呼び出し、認証情報とデフォルトの Object Storage Service (OSS) バケットに関する情報を取得できます。
認証に使用されるエンドポイント。VPC を介して認証情報をリクエストするように仮想プライベートクラウド (VPC) エンドポイントを設定できます。認証情報はファイルのアップロードに使用されます。
// 認証設定パッケージ 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{ // 認証設定は省略します。 // アクセスするリージョン。 RegionId: tea.String("<RegionId>"), // リージョン ID に基づいて 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) // RuntimeOptions インスタンスを作成し、ランタイムパラメーターを指定します。 runtime := &util.RuntimeOptions{} runtime.ReadTimeout = tea.Int(10000) resp, err := client.DetectBodyCountAdvance(request, runtime) if err != nil { panic(err) } // レスポンス。サーバー側で返される本文とヘッダーが含まれます。 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)) }認証に使用されるエンドポイント。内部ネットワークまたは VPC を介して認証情報をリクエストするように VPC エンドポイントを設定できます。認証情報はファイルのアップロードに使用されます。
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{ // 認証設定は省略します。 // アクセスするリージョン。 RegionId: tea.String("<RegionId>"), // リージョン ID に基づいて VPC エンドポイントを設定します。 OpenPlatformEndpoint: tea.String("openplatform-vpc.cn-shanghai.aliyuncs.com"), // ファイルのアップロードに使用する OSS エンドポイントを設定します。エンドポイントタイプを internal に設定すると、内部エンドポイントを使用して VPC またはクラシックネットワーク経由でファイルを OSS にアップロードできます。エンドポイントタイプを accelerate に設定すると、中国本土以外の高速エンドポイントを使用してファイルを OSS にアップロードできます。 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) // RuntimeOptions インスタンスを作成し、ランタイムパラメーターを指定します。 runtime := &util.RuntimeOptions{} runtime.ReadTimeout = tea.Int(10000) resp, err := client.DetectBodyCountAdvance(request, runtime) if err != nil { panic(err) } // レスポンス。サーバー側で返される本文とヘッダーが含まれます。 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)) }
付録: エンドポイントを照会する
OpenAPI Explorer でエンドポイントを照会できます。
OpenAPI Explorer のホームページで Alibaba Cloud サービスを選択します。この例では、ECS が選択されています。

2. ECS のホームページで、[リージョン] タブをクリックします。

3. 指定するリージョンを見つけ、そのリージョンの ECS のエンドポイントをコピーします。
また、「デバッグ」ページで ECS のエンドポイントを照会することもできます。このページで、左側のナビゲーションペインの [リージョン] にポインターを移動すると、ECS のエンドポイントが表示されます。
