CVM生成实例测试


title: CVM生成实例测试
date: 2019-05-30 14:26:33
tags:

# 说明

该文章讲解了腾讯云具体如何使用python调用api接口来生成新的服务器。

## 构成思路
工作期间如果需要测试机,总是需要手动点控制台才能生成服务器。
希望通过代码省去这步骤,直接生成,生成的同时返回生成的服务器IP信息,密码可以自己录入

## 所需环境
python3以上

安装有腾讯的sdk接口,安装方法通过pip安装即可,如下:

pip install tencentcloud-sdk-python

## 接口描述

接口请求域名: cvm.tencentcloudapi.com 。

本接口 (RunInstances) 用于创建一个或多个指定配置的实例。

实例创建成功后将自动开机启动,实例状态变为“运行中”。
预付费实例的购买会预先扣除本次实例购买所需金额,按小时后付费实例购买会预先冻结本次实例购买一小时内所需金额,在调用本接口前请确保账户余额充足。
本接口允许购买的实例数量遵循CVM实例购买限制,所创建的实例和官网入口创建的实例共用配额。
本接口为异步接口,当创建请求下发成功后会返回一个实例ID列表,此时实例的创建并立即未完成。在此期间实例的状态将会处于“准备中”,可以通过调用 DescribeInstances 接口查询对应实例的状态,来判断创建有没有最终成功。如果实例的状态由“准备中”变为“运行中”,则为创建成功。
默认接口请求频率限制:10次/秒。

注意:本接口支持金融区地域。由于金融区和非金融区是隔离不互通的,因此当公共参数 Region 为金融区地域(例如 ap-shanghai-fsi)时,需要同时指定带金融区地域的域名,最好和 Region 的地域保持一致,例如:cvm.ap-shanghai-fsi.tencentcloudapi.com。

具体接口详解可参考:https://cloud.tencent.com/document/product/213/15730

本接口 (DescribeInstances) 用于查询一个或多个实例的详细信息。

可以根据实例ID、实例名称或者实例计费模式等信息来查询实例的详细信息。过滤信息详细请见过滤器Filter。
如果参数为空,返回当前用户一定数量(Limit所指定的数量,默认为20)的实例。
默认接口请求频率限制:40次/秒。

注意:本接口支持金融区地域。由于金融区和非金融区是隔离不互通的,因此当公共参数 Region 为金融区地域(例如 ap-shanghai-fsi)时,需要同时指定带金融区地域的域名,最好和 Region 的地域保持一致,例如:cvm.ap-shanghai-fsi.tencentcloudapi.com。

具体详情可以参考:https://cloud.tencent.com/document/product/213/15728

## 代码示例

“` bash
# -*- coding: utf-8 -*-
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
# 导入对应产品模块的client models。
from tencentcloud.cvm.v20170312 import cvm_client, models
import json
import time

Region = “ap-guangzhou” #创建地域
secretId = “AKIDDIDBoXXXXXXXXXXXXXXXXXXXXXXXXX” #为腾讯云账号的API秘钥
secretKey = “54qYK4XXXXXXXXXXXXXXXXXXXXXX”

passwd = input(“请键入密码:”) #键入服务器面貌

def RunInstance():
#这部分为创建服务器代码
cred = credential.Credential(secretId,secretKey) #导入密钥
client = cvm_client.CvmClient(cred,Region)
request = models.RunInstancesRequest()
request.InstanceChargeType = ‘POSTPAID_BY_HOUR’
request.ImageId = ‘img-9qabwvbn’
request.InstanceType = ‘S4.SMALL1’
request.SystemDisk = {‘DiskType’:’CLOUD_PREMIUM’}
request.InternetAccessible = {‘InternetChargeType’:’TRAFFIC_POSTPAID_BY_HOUR’,’InternetMaxBandwidthOut’:’1′,’PublicIpAssigned’:’TRUE’}
request.SecurityGroupIds = [‘sg-ne6d2jcd’]
request.Placement = {‘Zone’:’ap-guangzhou-4′}
request.VirtualPrivateCloud = {‘VpcId’:’vpc-jprz7clf’,’SubnetId’:’subnet-qx54cau4′}
request.LoginSettings = {‘Password’:’%s’%passwd}
result = client.RunInstances(request)
result_srt = result.to_json_string()
result_dic = json.loads(result_srt)

time.sleep(15) #创建服务器后不会立即分配ip,等待15秒以便查询相关信息
#这部分创建服务器后,查询新建的服务器信息
req = models.DescribeInstancesRequest()
res = client.DescribeInstances(req)
res_srt = res.to_json_string()
res_dic = json.loads(res_srt)
ins_id = res_dic[‘InstanceSet’][0][‘InstanceId’]
ins_ip = res_dic[‘InstanceSet’][0][‘PublicIpAddresses’]
print(ins_id,ins_ip)
RunInstance()
“`


已发布

分类

来自

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注