このトピックでは、Windows 上の統合開発環境 (IDE) で Go 用 Alibaba Cloud SDK を使用する方法について説明します。この例では、Visual Studio (VS) Code を使用します。
前提条件
Go がインストールされていること。詳細については、「Windows に Go をインストールする」をご参照ください。
VS Code がインストールされていること。VS Code のインストール方法の詳細については、「Windows に Go 開発環境を構築する」をご参照ください。
SDK の使用
OpenAPI Explorer で提供されるサンプルプロジェクトを使用する
特定の API 操作のサンプルプロジェクトをダウンロードできない場合があります。この場合は、既存のプロジェクトで SDK を使用するをご参照ください。
OpenAPI Explorer にアクセスします。使用する API 操作を検索します。この例では、Elastic Compute Service (ECS) の DescribeRegions 操作を使用します。検索ボックスに DescribeRegions と入力し、検索結果で操作名をクリックして API デバッグページに移動します。

中央の列にある [パラメーター] タブで、要件に基づいてパラメーターを指定します。パラメーターを指定する際は、右端の列にある [ドキュメント] タブの情報をお読みください。操作の使用方法に関する注意事項と各パラメーターの説明を理解していることを確認してください。課金関連の情報に注意してください。
この例では、DescribeRegions 操作は 3 つの要求パラメーターをサポートしています。
パラメーター
必須
説明
InstanceChargeType
いいえ
インスタンスの課金方法。サポートされているリージョンは、課金方法によって異なります。デフォルト値:PrePaid。これは、サブスクリプション課金方法を示します。
ResourceType
いいえ
リソースの種類。サポートされているリージョンは、リソースの種類によって異なります。デフォルト値:instance。
AcceptLanguage
いいえ
レスポンスを返す言語。デフォルト値:zh-CN。

右端の列にある [SDK サンプルコード] タブで、プログラミング言語を選択し、[プロジェクトのダウンロード] をクリックして、完全な SDK プロジェクトをコンピューターにダウンロードします。次に、パッケージを解凍します。

VS Code を開き、上部のナビゲーションバーで [ファイル] > [フォルダーを開く] を選択し、解凍したフォルダーを選択します。
VS Code コンソールのトップナビゲーションバーで、[ターミナル] > [新しいターミナル] を選択します。コンソールの 下部に [ターミナル] ウィンドウが表示されます。

ターミナルで次のコマンドを実行して、現在のモジュールの依存関係を整理および更新します。
go mod tidySDK デモコードを実行します。ターミナルで次のコマンドを実行して、main ファイルのサンプルコードを実行します。
go run ./main結果を表示します。ターミナル内の任意の場所をクリックし、
Ctrl+Fを押してstatusCodeを検索します。"statusCode":200と表示されている場合は、呼び出しは成功しています。
既存のプロジェクトで SDK を使用する
VS Code を開き、上部のナビゲーションバーで [ファイル] > [フォルダーを開く] を選択します。プロジェクトフォルダーを作成して選択するか、既存のプロジェクトフォルダーを選択します。この例では、gosdkproject という名前のフォルダーが作成され、選択されています。
トップナビゲーションバーで、[ターミナル] > [新しいターミナル] を選択します。コンソールの 下部に [ターミナル] ウィンドウが表示されます。ターミナルで
go mod init gosdkprojectsコマンドを実行して、Go プロジェクトを初期化します。
SDK を取得します。
SDK Center にアクセスし、SDK を使用したいクラウドサービスを選択します。この例では、ECS を使用します。SDK バージョンとして [V2.0] を、プログラミング言語として [go] を選択します。

SDK をインストールします。
インストールコマンドをターミナルにコピーして、Enter キーを押します。

.go ファイルを作成します。プロジェクト名の右側にある [新しいファイル...] アイコンをクリックし、ecsDescribeRegions.go などのファイル名を入力します。

クライアントを初期化します。
ECS API を呼び出すには、最初に ECS クライアントを初期化する必要があります。
重要クライアントを初期化するときは、AccessKey ペアを使用して本人確認を完了する必要があります。この場合、事前に AccessKey ペアを取得する必要があります。AccessKey ペアの取得方法の詳細については、「AccessKey を作成する」をご参照ください。
RAM ユーザーの AccessKey ペアを取得したら、環境変数に AccessKey ペアを設定する必要があります。詳細については、「Linux、macOS、および Windows で環境変数を設定する」をご参照ください。
エンドポイントの設定方法の詳細については、「エンドポイント」をご参照ください。
package main import ( "os" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" ecs20140526 "github.com/alibabacloud-go/ecs-20140526/v4/client" "github.com/alibabacloud-go/tea/tea" ) // CreateClient 関数は、ECS クライアントを初期化して返します。 // この関数は引数を取りませんが、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET が設定されていることを確認する必要があります。 // return *ecs20140526.Client // return error: クライアントの作成中にエラーが発生した場合、nil でないエラーオブジェクトが返されます。 func CreateClient() (_result *ecs20140526.Client, _err error) { // openapi.Config オブジェクトを初期化して、ECS クライアントを設定します。 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"), } // 設定を使用して、ECS クライアントインスタンスを作成して返します。 return ecs20140526.NewClient(config) }API 操作を呼び出します。API 操作を呼び出す前に、対応する API ドキュメント を読む必要があります。この例では、ECS の DescribeRegions 操作を使用します。
説明各 API 操作には、${API 名}${Request} 形式で名前が付けられたリクエストオブジェクトがあります。例:DescribeRegionsRequest。
package main import ( "os" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" ecs20140526 "github.com/alibabacloud-go/ecs-20140526/v4/client" "github.com/alibabacloud-go/tea/tea" ) // CreateClient 関数は、ECS クライアントを初期化して返します。 // この関数は引数を取りませんが、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET が設定されていることを確認する必要があります。 // return *ecs20140526.Client // return error: クライアントの作成中にエラーが発生した場合、nil でないエラーオブジェクトが返されます。 func CreateClient() (_result *ecs20140526.Client, _err error) { // openapi.Config オブジェクトを初期化して、ECS クライアントを設定します。 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"), } // 設定を使用して、ECS クライアントインスタンスを作成して返します。 return ecs20140526.NewClient(config) } // InvokeApi 関数は、ECS の DescribeRegions 操作を呼び出して、使用可能なリージョンをクエリするために使用されます。 // // レスポンス: // _result: クエリされたリージョンを含む *ecs20140526.DescribeRegionsResponse 型のポインターを返します。 // _err: error 型のエラーメッセージを返します。呼び出し中にエラーが発生した場合、値は空ではありません。 func InvokeApi()(_result *ecs20140526.DescribeRegionsResponse, _err error) { // ECS クライアントを作成します。 client, _err := CreateClient() if _err != nil { // クライアントの作成中にエラーが発生した場合、エラーメッセージが返されます。 return _result, _err } // DescribeRegions リクエストを作成します。 describeRegionsRequest := &ecs20140526.DescribeRegionsRequest{} // DescribeRegions リクエストを開始し、結果を返します。 return client.DescribeRegions(describeRegionsRequest) }例外を処理します。
Go 用 Alibaba Cloud SDK は、エラーメッセージを返すことによって例外を処理します。詳細については、「例外処理」をご参照ください。ただし、予期しない状況では、
panicとrecoverを使用して例外を処理する必要がある場合があります。Go でpanicを使用して例外を処理する場合、現在の関数の処理がすぐに停止します。この場合、panic は通常 defer とともに使用され、defer内でrecoverを使用して現在のpanicをキャプチャし、通常の処理プロセスを復元します。したがって、panic、defer、recoverを適切に使用することで、特にプログラムのクラッシュを引き起こす可能性のある重大なエラーを処理する場合に、より堅牢なエラー処理ロジックを構築できます。package main import ( "fmt" "os" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" ecs20140526 "github.com/alibabacloud-go/ecs-20140526/v4/client" "github.com/alibabacloud-go/tea/tea" ) // CreateClient 関数は、ECS クライアントを初期化して返します。 // この関数は引数を取りませんが、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET が設定されていることを確認する必要があります。 // return *ecs20140526.Client // return error: クライアントの作成中にエラーが発生した場合、nil でないエラーオブジェクトが返されます。 func CreateClient() (_result *ecs20140526.Client, _err error) { // openapi.Config オブジェクトを初期化して、ECS クライアントを設定します。 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"), } // 設定を使用して、ECS クライアントインスタンスを作成して返します。 return ecs20140526.NewClient(config) } // InvokeApi 関数は、ECS の DescribeRegions 操作を呼び出して、使用可能なリージョンをクエリするために使用されます。 // // レスポンス: // _result: クエリされたリージョンを含む *ecs20140526.DescribeRegionsResponse 型のポインターを返します。 // _err: error 型のエラーメッセージを返します。呼び出し中にエラーが発生した場合、値は空ではありません。 func InvokeApi() (_result *ecs20140526.DescribeRegionsResponse, _err error) { // ECS クライアントを作成します。 client, _err := CreateClient() if _err != nil { // クライアントの作成中にエラーが発生した場合、エラーメッセージが返されます。 return _result, _err } // DescribeRegions リクエストを作成します。 describeRegionsRequest := &ecs20140526.DescribeRegionsRequest{} // DescribeRegions リクエストを開始し、結果を返します。 return client.DescribeRegions(describeRegionsRequest) } // この関数は、API 操作を呼び出すことによってリージョン情報を取得し、例外を処理して回復できます。 func main() { // defer は、深い再帰シナリオまたは予期しないエラーの場合にのみ使用することをお勧めします。 defer func() { if err := tea.Recover(recover()); err != nil { // 例外がキャッチされたら、例外の種類に基づいて処理します。 if sdkError, ok := err.(*tea.SDKError); ok { // エラーメッセージ、エラーコード、および関連データを表示します。 fmt.Println(tea.StringValue(sdkError.Message)) fmt.Println(tea.StringValue(sdkError.Code)) fmt.Println(tea.StringValue(sdkError.Data)) } else { // 他の種類のエラーメッセージを表示します。 fmt.Println(err) } } }() // API 操作を呼び出して結果を取得します。 result, _ := InvokeApi() // 返されたリージョンをトラバースして表示します。 for _, region := range result.Body.Regions.Region { fmt.Println("regionId: " + tea.StringValue(region.RegionId)) } // リクエスト ID を表示します。 fmt.Println("RequestId: " + tea.StringValue(result.Body.RequestId)) }ターミナルで
go runコマンドを使用してコードを実行します。