要调天翼云的云主机接口做批量开机,文档翻了两小时,签名示例还是跑不通,AK 和 SK 在控制台里也找不到在哪儿拿。
入口其实不难找。天翼云官网是 www.ctyun.cn,登录控制台后点右上角账号名,进账号中心的 AccessKey 管理,这里能看到 AK 和对应的 SK,没有就新建一对。SK 只在创建时完整显示一次,复制下来存到本地密码库,别写进代码仓库。
文档在哪一栏
官网顶部导航有文档入口,进去找 API 参考或者开发指南,按产品分册,云主机、对象存储、VPC 各有一份。导航结构会调整,记住路径是官网 → 文档 → 对应产品的 API 参考,比记死链接靠谱。认证方式、请求示例、错误码都收在同一册里。
签名的几个要点
- 请求头:带 ctyun-eop-request-id 做请求追踪,签名结果放在 Eop-Authorization 里,字段名以当前文档为准
- 算法:用 AK 和 SK 对规范化后的请求做 HMAC-SHA256,再把结果编码进头
- 参与内容:方法、路径、关键请求头、请求体摘要,任何一项变了签名就失效
- 时间戳:和设备偏差超过十几分钟会被直接拒掉,服务器时间要同步
先用只读接口验证签名
别一上来就调创建实例。先拿查询可用区、查询实例列表这类只读接口试,通了再接触写操作。签名不对时把参与签名的原始串打印出来,和文档示例逐字符比对,九成问题出在路径少了个斜杠、查询参数没排序,或者网关改了请求体导致摘要对不上。
权限上,生产环境用子账号,只授予实际需要的产品权限。主账号的 AK 一旦泄露,整个账号下的资源都在别人手里,云上被刷钱的案例多数是这么来的。
排查卡住超过半天,别硬啃文档,直接提工单要一份对应语言的 SDK 示例,对着能跑的代码改,比自己手写签名快得多。