1package main
2
3import (
4	"encoding/json"
5	"fmt"
6	"os"
7
8	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
9	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
10	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
11	cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312"
12)
13
14func main() {
15	credential := common.NewCredential(
16		os.Getenv("TENCENTCLOUD_SECRET_ID"),
17		os.Getenv("TENCENTCLOUD_SECRET_KEY"),
18	)
19
20	cpf := profile.NewClientProfile()
21	cpf.HttpProfile.ReqMethod = "POST"
22	cpf.HttpProfile.ReqTimeout = 5
23	//cpf.HttpProfile.Endpoint = "cvm.ap-guangzhou.tencentcloudapi.com"
24	cpf.SignMethod = "HmacSHA1"
25
26	client, _ := cvm.NewClient(credential, "ap-guangzhou", cpf)
27	request := cvm.NewRunInstancesRequest()
28	request.ImageId = common.StringPtr("img-8toqc6s3")
29	request.Placement = &cvm.Placement{
30		Zone: common.StringPtr("ap-guangzhou-3"),
31	}
32	request.InstanceChargeType = common.StringPtr("POSTPAID_BY_HOUR")
33	request.InstanceCount = common.Int64Ptr(1)
34	request.InstanceName = common.StringPtr("API-SDK-GO")
35	request.InstanceType = common.StringPtr("S2.SMALL1")
36	request.InternetAccessible = &cvm.InternetAccessible{
37		InternetChargeType:      common.StringPtr("BANDWIDTH_POSTPAID_BY_HOUR"),
38		InternetMaxBandwidthOut: common.Int64Ptr(10),
39		PublicIpAssigned:        common.BoolPtr(true),
40	}
41	request.LoginSettings = &cvm.LoginSettings{
42		Password: common.StringPtr("passw0rdExample"),
43	}
44	request.SecurityGroupIds = common.StringPtrs([]string{"sg-icy671l9"})
45	request.SystemDisk = &cvm.SystemDisk{
46		DiskSize: common.Int64Ptr(50),
47		DiskType: common.StringPtr("CLOUD_BASIC"),
48	}
49	request.VirtualPrivateCloud = &cvm.VirtualPrivateCloud{
50		SubnetId: common.StringPtr("subnet-b1wk8b10"),
51		VpcId:    common.StringPtr("vpc-8ek64x3d"),
52	}
53
54	// get response structure
55	response, err := client.RunInstances(request)
56	// API errors
57	if _, ok := err.(*errors.TencentCloudSDKError); ok {
58		fmt.Printf("An API error has returned: %s", err)
59		return
60	}
61	// unexpected errors
62	if err != nil {
63		panic(err)
64	}
65	b, _ := json.Marshal(response.Response)
66	fmt.Printf("%s", b)
67}
68