不必必须用python sdk,腾讯云官方推荐但非强制;环境受限时可直接用requests手动构造rest api请求,关键在于正确实现tc3-hmac-sha256签名及参数校验。

确认是否必须用 Python SDK 而非直接调用 REST API
腾讯云官方推荐且维护最及时的是 tencentcloud-sdk-python,但它不是唯一选择。如果你只需要查实例、启停、释放,且环境受限(比如无 pip 权限、极简容器),直接发 requests.post 到 https://cvm.tencentcloudapi.com 更轻量、更可控——SDK 本质也是封装了签名和 HTTP 请求。
但注意:tencentcloud-sdk-python 默认依赖 pyopenssl 和 cryptography,在 Alpine 或某些精简镜像里容易编译失败;而裸 requests 只需处理好 Authorization 头里的 TC3-HMAC-SHA256 签名,逻辑固定可复用。
- 新项目、有完整 pip 环境 → 优先用
tencentcloud-sdk-python - CI/CD 构建阶段报
cryptography编译错 → 改用requests + 自签名 - 只做定时启停,不涉及复杂参数(如竞价实例、IPv6 配置)→ 签名逻辑抄一遍,50 行内搞定
用 tencentcloud-sdk-python 启动一台按量计费 CVM
关键不是“怎么调”,而是“哪些参数不能错”。比如 InstanceChargeType 设为 POSTPAID_BY_HOUR 才是按量,设成 PREPAID 却没传 InstanceChargePeriod 会直接报错 InvalidParameterValue;再比如 Placement 必须指定 Zone,填 ap-guangzhou-3 这种真实可用区 ID,填 ap-guangzhou(地域)就失败。
示例片段(仅核心参数):
from tencentcloud.cvm.v20170312 import models, client
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
<p>cred = credential.Credential("AK...", "SK...")
http_profile = HttpProfile(endpoint="cvm.tencentcloudapi.com")
client_profile = ClientProfile(http_profile=http_profile)
client = client.CvmClient(cred, "ap-guangzhou", client_profile)</p><p>req = models.RunInstancesRequest()
req.ImageId = "img-pi84g93v" # 必须是当前地域已共享/自有的镜像
req.InstanceType = "S5.SMALL1"
req.Placement = models.Placement(Zone="ap-guangzhou-3")
req.InstanceChargeType = "POSTPAID_BY_HOUR"
req.SecurityGroupIds = ["sg-12345678"]
req.VirtualPrivateCloud = models.VirtualPrivateCloud(
VpcId="vpc-abc123",
SubnetId="subnet-def456"
)
resp = client.RunInstances(req)
</p>
-
RunInstances不返回实例 IP,需后续调DescribeInstances查PublicIpAddresses - 若想自动绑定弹性公网 IP,得额外调
AssignPublicIpAddresses(CVM 创建时不支持一步绑 EIP) - 错误码
ResourceInsufficient常因可用区库存不足,换ap-guangzhou-4就可能成功
用 requests 手动构造 StopInstances 请求(免 SDK)
绕过 SDK 的最大好处是:不依赖任何第三方包,纯标准库就能跑。难点全在签名——腾讯云要求的 TC3-HMAC-SHA256 签名包含 5 步:拼接规范请求、生成签名摘要、计算日期密钥、计算服务密钥、最终签名。漏一步,返回 AuthFailure.SignatureFailure。
重点检查项:
图片提示词生成器?不止如此。 马甲系统 —— 把脑海中的画面,翻译成AI能理解的专业表达。 用得越多,它越懂你:首次需要多问几句确认方向,用久了几乎一说就懂。 用得越多,它越快:缓存机制让后续对话越来越省。 RAG进化:成功案例持续入库,越跑越聪明。 输入「新手指南」查看完整功能介绍
- 请求头
X-TC-Timestamp必须是秒级时间戳(int(time.time())),不是毫秒 -
Authorization头里Credential部分的date格式必须是YYYYMMDD(如20240520),和服务名cvm、区域ap-guangzhou严格对应 - 请求体必须是合法 JSON 字符串,且字段名大小写敏感:
InstanceIds不能写成instanceids
最小可行请求体:
{
"InstanceIds": ["ins-12345678"]
}
发出前务必确认该实例处于 RUNNING 状态,对 STOPPED 实例调 StopInstances 会返回 InvalidInstanceState。
释放实例前必须关闭强制保护开关
很多自动化脚本卡在 TerminateInstances 报错 OperationDenied,原因几乎都是实例开启了“销毁保护”。这个开关默认关闭,但一旦人工在控制台点过“启用销毁保护”,API 就无法释放,必须先调 ModifyInstancesAttribute 关掉。
操作顺序不能错:
- 先查实例属性:
DescribeInstances→ 看DisableApiTermination是否为True - 如果是,调
ModifyInstancesAttribute,传{"DisableApiTermination": False} - 最后才调
TerminateInstances
没有这一步,所有释放逻辑都会静默失败——错误信息里不会提示“因为开了销毁保护”,只会说“操作被拒绝”。
销毁保护是腾讯云少有需要显式解除的隐性锁,类似 AWS 的 DisableApiTermination,但文档埋得深,容易忽略。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










