背景
之前在证书运维项目中,考虑用 用纯 NodeJS 改造一下项目(原项目中使用了shell 方式,技术栈不够纯粹)对接腾讯云 DNS 进行证书生成的校验,最后由于限制没有采用此方案。但是对接过程中的经验还是值得记录的。
源码Demo
证书运维项目已开源,欢迎查看 Wobhot-Cert,在 server/service/DNSPod 中
API文档
腾讯云文档 非常全,但想找到内容需要有一定的运维知识
腾讯云SDK中心 主要是记录了SDK 包名,同时里面也有各个版本的文档
NodeJS SDK
NodeJS SDK文档地址,Demo是比较详细的,主要是里面一些参数查找的位置比较模糊,下面就针对这些模糊的做一下说明。
const tencentcloud = require("tencentcloud-sdk-nodejs")
// typescript 引入
// import * as tencentcloud from "tencentcloud-sdk-nodejs"
// const CvmClient = tencentcloud.cvm.v20170312.Client
// ...
// 导入对应产品模块的client models。
const CvmClient = tencentcloud.cvm.v20170312.Client
// 实例化要请求产品(以cvm为例)的client对象
const client = new CvmClient({
// 为了保护密钥安全,建议将密钥设置在环境变量中或者配置文件中,请参考本文凭证管理章节。
// 硬编码密钥到代码中有可能随代码泄露而暴露,有安全隐患,并不推荐。
credential: {
secretId: process.env.TENCENTCLOUD_SECRET_ID,
secretKey: process.env.TENCENTCLOUD_SECRET_KEY,
},
// 产品地域
region: "ap-shanghai",
// 可选配置实例
profile: {
signMethod: "TC3-HMAC-SHA256", // 签名方法
httpProfile: {
reqMethod: "POST", // 请求方法
reqTimeout: 30, // 请求超时时间,默认60s
// proxy: "http://127.0.0.1:8899" // http请求代理
},
},
})
// 通过client对象调用想要访问的接口(Action),需要传入请求对象(Params)以及响应回调函数
// 即:client.Action(Params).then(res => console.log(res), err => console.error(err))
// 如:查询云服务器可用区列表
client.DescribeZones().then(
(data) => {
console.log(data)
},
(err) => {
console.error("error", err)
}
)
从上面的 例子中可以看出,其实就 const CvmClient = tencentcloud.cvm.v20170312.Client 中的 cvm , v20170312 有点没有头绪。
cvm
可从腾讯云SDK中心 中查找,其实就是云服务器的SDK包名字
v20170312
指代具体需要调用的接口的版本,具体位置可从接口位置查看
不同内容的版本会有差异,如 DNSPod 就是 v20210323