作者:互联网 时间: 2026-08-07 14:39:54
调用火山引擎API需完成身份认证、签名构造、HTTP请求三步,推荐使用官方SDK初始化客户端并调用封装方法;手动请求需严格遵循时间格式、Host头及签名规则;TOS上传文件时key不可以/开头。
要在Node.js项目中调用火山引擎的API(如ECS、VPC或对象存储TOS),必须先完成身份认证、构造签名、发起HTTP请求三个核心环节,漏掉任一环都会返回401或403错误。
执行 npm install @volcengine/volc-sdk-nodejs 安装官方SDK。这一步不能跳过,手动拼签名极易出错且不支持自动重试和超时控制。
创建 volcClient.js 文件,填入你的AccessKey ID和Secret Key:
const { VolcEngine } = require('@volcengine/volc-sdk-nodejs');
const client = new VolcEngine({
accessKeyId: '【你的AccessKey ID】',
secretKey: '【你的Secret Key】',
region: 'cn-north-1',
service: 'ecs'
});
注意:region和服务名必须与你要调用的API完全匹配,比如调TOS要写 service: 'tos',写成 tos-api 会直接报错。
方法一:使用SDK封装好的方法(推荐)
client.listInstances({}).then(res => console.log(res)).catch(err => console.error(err));
方法二:手动构造HTTP请求(仅调试用)
第一步:设置请求路径为 /,HTTP方法为 GET;
第二步:添加必要Header:X-Date(当前UTC时间,格式为 YYYYMMDD'T'HHMMSS'Z')、Host(如 ecs.cn-north-1.volcengineapi.com);
第三步:按火山签名算法生成 Authorization 头——这一步最易出错,【时间戳偏差超过15分钟会导致签名失效】;
第四步:用 https.request 发起请求,响应体是JSON字符串,需 JSON.parse() 解析。
先创建TOS客户端实例:
const tosClient = new VolcEngine({ service: 'tos', region: 'cn-beijing', bucket: 'your-bucket-name' });
调用putObject上传本地文件:
tosClient.putObject({
key: 'test.jpg',
body: fs.readFileSync('./test.jpg')
}).then(() => console.log('上传成功')).catch(e => console.error(e));
这一步操作起来很简单,直接把文件读取为Buffer传进去就行。但【key不能以/开头,否则TOS会返回400 Bad Request】。