import json from tencentcloud.common import credential from tencentcloud.common.profile.client_profile import ClientProfile from tencentcloud.common.profile.http_profile import HttpProfile from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException from tencentcloud.cvm.v20170312 import cvm_client, models # 从腾讯云自动弹性伸缩 ''' 1. 通过腾讯云API创建一个服务器 2. 通过腾讯云API获取服务器的IP地址 3. 通过腾讯云API获取服务器的用户名和密码 4. 通过腾讯云API获取服务器的端口号 5. 通过腾讯云API获取服务器的状态 6. 通过腾讯云API删除一个服务器 1. 如果服务器闲置数大于两台,需要通知腾讯云API删除一台闲置服务器 2. 如果服务器负载全满,需要通知腾讯云API创建一台新的服务器 3. 如果服务器负载不全满,需要通知腾讯云API删除一台闲置服务器 4. 每天的早上9点到下午5点, 至少保留一台空闲服务器 5. 每天的晚上5点到早上9点, 移除所有空闲服务器 ''' try: # 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密 # 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305 # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 cred = credential.Credential("AKIDgO0UrfO2b4mS6io7Yx9Yq1Pjz8AA4qUA", "jVBtV1SnprOviRK5teR7GC82thbTKqrv") # 实例化一个http选项,可选的,没有特殊需求可以跳过 httpProfile = HttpProfile() httpProfile.endpoint = "cvm.ap-guangzhou.tencentcloudapi.com" # 实例化一个client选项,可选的,没有特殊需求可以跳过 clientProfile = ClientProfile() clientProfile.httpProfile = httpProfile # 实例化要请求产品的client对象,clientProfile是可选的 client = cvm_client.CvmClient(cred, "ap-guangzhou", clientProfile) # 实例化一个请求对象,每个接口都会对应一个request对象 req = models.RunInstancesRequest() params = { "InstanceChargeType": "SPOTPAID", "DisableApiTermination": False, "Placement": { "Zone": "ap-guangzhou-6", "ProjectId": 0 }, "InstanceMarketOptions": { "SpotOptions": { "MaxPrice": "1000" } }, "VirtualPrivateCloud": { "AsVpcGateway": False, "VpcId": "vpc-fyjby1gt", "SubnetId": "subnet-oqdeakts", "Ipv6AddressCount": 0 }, "InstanceType": "S6.MEDIUM2", "ImageId": "img-eb30mz89", "SystemDisk": { "DiskSize": 50, "DiskType": "CLOUD_BSSD" }, "InternetAccessible": { "InternetMaxBandwidthOut": 100, "PublicIpAssigned": True, "InternetChargeType": "TRAFFIC_POSTPAID_BY_HOUR" }, "InstanceName": "未命名", "LoginSettings": { "KeyIds": [ "skey-672qeot7" ] }, "SecurityGroupIds": [ "sg-fkkd8qw9" ], "InstanceCount": 1, "EnhancedService": { "SecurityService": { "Enabled": True }, "MonitorService": { "Enabled": True }, "AutomationService": { "Enabled": True } } } req.from_json_string(json.dumps(params)) # 返回的resp是一个RunInstancesResponse的实例,与请求对象对应 resp = client.RunInstances(req) # 输出json格式的字符串回包 print(resp.to_json_string()) except TencentCloudSDKException as err: print(err)