Windows 上で Visual Studio Code (VS Code) を使用して Alibaba Cloud Go SDK を使い始める方法を説明します。
前提条件
-
Go がインストールされていること。 Windows に Go をインストールする。
-
VS Code がインストールされていること。 Windows 上で Go 開発環境をセットアップする。
SDK の使用
OpenAPI Explorer のサンプルプロジェクトの使用
サンプルプロジェクトのダウンロードが失敗することがあります。その場合は、代わりに既存のプロジェクトで SDK を使用するをご参照ください。
-
API デバッグページの OpenAPI Portal に移動します。 クラウド製品と API を選択します。 この例では、ECS の DescribeRegions API を使用します。 検索バーに「DescribeRegions」と入力し、API 名をクリックします。

-
[パラメータ設定] タブで、必要なパラメータを入力します。 右側の [ドキュメント] タブには、API の説明、注意事項、課金情報、およびパラメータの詳細が記載されています。
DescribeRegions API は、3 つのパラメーターをサポートしています。
パラメーター名
必須
説明
InstanceChargeType
任意
サポートされるリージョンは、課金方法によって異なります。 デフォルト:PrePaid。
ResourceType
任意
サポートされるリージョンは、リソースタイプによって異なります。 デフォルト:instance。
AcceptLanguage
任意
返される結果の言語。 デフォルト:zh-CN。

-
[SDK サンプル] タブで、言語を選択し、[プロジェクトのダウンロード] をクリックします。 ダウンロードしたプロジェクトを解凍します。

-
VS Code で、[File] > [Open Folder] の順にクリックし、解凍したフォルダーを選択します。
-
[Terminal] > [New Terminal] の順にクリックして、下部にターミナルを開きます。

-
次のコマンドを実行して、モジュールの依存関係を更新します。
go mod tidy -
次のコマンドを実行して、main パッケージのサンプルコードを実行します。
go run ./main -
結果を検証します。 ターミナルで
Ctrl+Fを押し、statusCodeを検索します。"statusCode": 200の応答は成功を示します。
既存のプロジェクトで SDK を使用する
-
VS Code で、[File] > [Open Folder] の順にクリックし、gosdkproject などのプロジェクトフォルダーを作成または選択します。
-
[Terminal] > [New Terminal] の順にクリックし、
go mod init gosdkprojectを実行して Go プロジェクトを初期化します。
-
SDK を入手します。
SDK センターで、ECS などのクラウド製品を選択し、[SDK Version] を [V2.0] に、[Language] を [Go] に設定します。

-
SDK をインストールします。
インストールコマンドをターミナルにコピーして実行します。

-
.go ファイルを作成します。 プロジェクト名の横にある [New File...] をクリックし、
ecsDescribeRegions.goなどのファイル名を入力します。
-
クライアントを初期化します。
ECS API を呼び出す前に ECS クライアントを初期化します。
重要クライアントの初期化にはアクセスキーペアが必要です。AccessKey を作成
アクセスキーペアを取得したら、環境変数として設定します。Linux、macOS、Windows システムで環境変数を設定
エンドポイント設定:Endpoints
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: ECS クライアントを返します。 // 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 の
DescribeRegionsAPI を呼び出します。説明各 API には、
${APIName}${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: ECS クライアントを返します。 // 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 API を呼び出して、利用可能なリージョン情報を照会します。 // // 戻り値: // _result: 照会されたリージョン情報を含む *ecs20140526.DescribeRegionsResponse 型のポインターを返します。 // _err: error 型のエラーメッセージを返します。 呼び出し中にエラーが発生した場合、この値は nil ではありません。 func InvokeApi()(_result *ecs20140526.DescribeRegionsResponse, _err error) { // ECS クライアントを作成します。 client, _err := CreateClient() if _err != nil { // クライアントの作成中にエラーが発生した場合は、エラーメッセージを直接返します。 return _result, _err } // DescribeRegions リクエストを作成します。 describeRegionsRequest := &ecs20140526.DescribeRegionsRequest{} // DescribeRegions API を呼び出し、結果を返します。 return client.DescribeRegions(describeRegionsRequest) } -
例外を処理します。
Alibaba Cloud Go SDK は、標準的な例外処理のためにエラーを返します (例外処理)。 予期せぬ状況では、
panicをdeferとrecoverを組み合わせて使用します。panicは実行を即座に停止します。deferブロック内で、recoverは panic をキャッチしてプログラムの異常終了を防ぎ、処理の継続を可能にします。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: ECS クライアントを返します。 // 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 API を呼び出して、利用可能なリージョン情報を照会します。 // // 戻り値: // _result: 照会されたリージョン情報を含む *ecs20140526.DescribeRegionsResponse 型のポインターを返します。 // _err: error 型のエラーメッセージを返します。 呼び出し中にエラーが発生した場合、この値は nil ではありません。 func InvokeApi() (_result *ecs20140526.DescribeRegionsResponse, _err error) { // ECS クライアントを作成します。 client, _err := CreateClient() if _err != nil { // クライアントの作成中にエラーが発生した場合は、エラーメッセージを直接返します。 return _result, _err } // DescribeRegions リクエストを作成します。 describeRegionsRequest := &ecs20140526.DescribeRegionsRequest{} // DescribeRegions API を呼び出し、結果を返します。 return client.DescribeRegions(describeRegionsRequest) } // この関数は API を呼び出してリージョン情報を取得し、例外発生時に回復して処理します。 func main() { // defer は、深い再帰や予期せぬエラーなどのシナリオでのみ使用してください。 defer func() { if err := tea.Recover(recover()); err != nil { // 例外がキャッチされたら、例外のタイプに基づいて処理します。 if sdkError, ok := err.(*tea.SDKError); ok { // SDK のエラーメッセージ、エラーコード、および関連データを表示します。 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)) } // RequestId を表示します。 fmt.Println("RequestId: " + tea.StringValue(result.Body.RequestId)) } -
ターミナルで
go runを実行してコードを実行します。