怎么使用Python调用腾讯云API实现自动化管理云主机生命周期?

梦伟姑娘_7319

梦伟姑娘_7319

2026-09-05

404人浏览

原创

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

怎么使用python调用腾讯云api实现自动化管理云主机生命周期?

确认是否必须用 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。

重点检查项:

提示词大师-python版
提示词大师-python版

图片提示词生成器?不止如此。 马甲系统 —— 把脑海中的画面,翻译成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应用能力赋能!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1611

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

3864

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1609

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

22257

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2727

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2787

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1103

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

596

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2143

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程