このトピックでは、Go用Alibaba Cloud SDK V1.0でタイムアウト期間を設定する方法について説明します。
方法
説明
読み取りリクエストのタイムアウト期間を設定するために使用されるメソッドの優先順位は、降順で次のとおりです。リクエストオブジェクトの使用、SDKクライアントの初期化、SDKクライアントの初期化時のConfigオブジェクトの使用、コアライブラリのデフォルト設定の使用、デフォルト設定の使用。
接続リクエストのタイムアウト期間を設定するために使用されるメソッドの優先順位は、降順で次のとおりです。リクエストオブジェクトの使用、SDKクライアントの初期化、デフォルト設定の使用。
デフォルト設定を使用します。 接続リクエストのデフォルトのタイムアウト期間は 5,000 ミリ秒で、読み取りリクエストのデフォルトのタイムアウト期間は 10,000 ミリ秒です。
重要Go用Alibaba Cloud SDKのコアライブラリでは、一部のAPI操作の読み取りリクエストのタイムアウト期間を設定するために特定の設定が使用されます。 特定の設定が存在する場合、特定の設定がデフォルト設定として使用されます。 詳細については、api_timeout.go をご参照ください。
リクエストオブジェクトを使用します。 この方法は、現在のリクエストに対してのみ有効です。
import ( "fmt" "os" "time" "github.com/aliyun/alibaba-cloud-sdk-go/sdk" "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials" ecs "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs" ) func main() { config := sdk.NewConfig() // RAMユーザーのAccessKey IDとAccessKeyシークレットを使用します。 credential := credentials.NewAccessKeyCredential(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")) client, err := ecs.NewClientWithOptions("cn-hangzhou", config, credential) if err != nil { panic(err) } // リクエストを作成します。 request := ecs.CreateDescribeRegionsRequest() // リクエストのタイムアウト期間を設定します。 この設定は、現在のリクエストに対してのみ有効です。 request.SetConnectTimeout(10 * time.Second) request.SetReadTimeout(5 * time.Second) // プロトコルとしてHTTPSを指定します。 request.Scheme = "https" // リクエストパラメータ。 request.InstanceChargeType = "PrePaid" // インスタンスの課金方法。 request.ResourceType = "instance" // リソースの種類。 // リクエストを送信し、レスポンスを取得します。 response, err := client.DescribeRegions(request) if err != nil { fmt.Print(err.Error()) } fmt.Printf("response is %#v\n", response) }SDKクライアントを初期化します。 この方法は、SDKクライアントを使用して送信されるすべてのリクエストに対して有効です。
import ( "fmt" "os" "time" "github.com/aliyun/alibaba-cloud-sdk-go/sdk" "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials" ecs "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs" ) func main() { config := sdk.NewConfig() // RAMユーザーのAccessKey IDとAccessKeyシークレットを使用します。 credential := credentials.NewAccessKeyCredential(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")) client, err := ecs.NewClientWithOptions("cn-hangzhou", config, credential) if err != nil { panic(err) } // SDKクライアントでタイムアウト期間を設定します。 この設定は、SDKクライアントを使用して送信されるすべてのリクエストに有効です。 client.SetConnectTimeout(10 * time.Second) client.SetReadTimeout(5 * time.Second) // リクエストを作成します。 request := ecs.CreateDescribeRegionsRequest() // プロトコルとしてHTTPSを指定します。 request.Scheme = "https" // リクエストパラメータ。 request.InstanceChargeType = "PrePaid" // インスタンスの課金方法。 request.ResourceType = "instance" // リソースの種類。 // リクエストを送信し、レスポンスを取得します。 response, err := client.DescribeRegions(request) if err != nil { fmt.Print(err.Error()) } fmt.Printf("response is %#v\n", response) }SDKクライアントを初期化する際にConfigオブジェクトを使用します。 この方法は、Configオブジェクトを使用して初期化されるすべてのSDKクライアントに対して有効です。
import ( "fmt" "os" "time" "github.com/aliyun/alibaba-cloud-sdk-go/sdk" "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials" ecs "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs" ) func main() { config := sdk.NewConfig() // Configオブジェクトを使用してタイムアウト期間を設定します。 config.Timeout = 5 * time.Second // RAMユーザーのAccessKey IDとAccessKeyシークレットを使用します。 credential := credentials.NewAccessKeyCredential(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")) client, err := ecs.NewClientWithOptions("cn-hangzhou", config, credential) if err != nil { panic(err) } // リクエストを作成します。 request := ecs.CreateDescribeRegionsRequest() // プロトコルとしてHTTPSを指定します。 request.Scheme = "https" // リクエストパラメータ。 request.InstanceChargeType = "PrePaid" // インスタンスの課金方法。 request.ResourceType = "instance" // リソースの種類。 // リクエストを送信し、レスポンスを取得します。 response, err := client.DescribeRegions(request) if err != nil { fmt.Print(err.Error()) } fmt.Printf("response is %#v\n", response) }