问题

解决

结尾

问题

今天将本地的文件上传到第三方存储 OSS 的时候,遇到了一个问题,报错信息如下:

InvalidAccessKeyIdError: The OSS Access Key Id you provided does not exist in our records

报错信息的意思是说我们提供的OSS访问的key不存在,访问禁止。

但是,可以确定的是改动之前是可以的(刚才调整了部分代码逻辑,整理了部分代码),现在的改动理论上不会影响到OSS上传的。

整体的报错日志如下:

1|www  | Upload error: { InvalidAccessKeyIdError: The OSS Access Key Id you provided does not exist in our records.\
1|www  |     at Client.requestError (/root/boffmpeg/node_modules/ali-oss/lib/client.js:367:11)\
1|www  |     at <anonymous>\
1|www  |     at process._tickCallback (internal/process/next_tick.js:189:7)\
1|www  |   name: 'InvalidAccessKeyIdError',\
1|www  |   status: 403,\
1|www  |   code: 'InvalidAccessKeyId',\
1|www  |   requestId: '6076995FFA636C3532E52BC1',\
1|www  |   hostId: 'boffmpeg.oss-cn-beijing.aliyuncs.com',\
1|www  |   params:\
1|www  |    { object: './public/text/6076995fd8a9902db2b7ac10/0.pdf',\
1|www  |      bucket: 'boffmpeg',\
1|www  |      method: 'POST',\
1|www  |      subres: 'uploads',\
1|www  |      timeout: undefined,\
1|www  |      ctx: undefined,\
1|www  |      headers: { 'x-oss-meta-year': 2021, 'x-oss-meta-people': 'test' },\
1|www  |      mime: 'application/pdf',\
1|www  |      xmlResponse: true,\
1|www  |      successStatuses: [ 200 ] } }

报错截图:
在这里插入图片描述

解决

尽管,现在的改动理论上不会影响到OSS上传的逻辑,最开始一度怀疑是账号过期了,于是新生成了App ID,再试上传,发现也不行。

通过这样的尝试后,大概率确定了问题的真实原因,应该是代码逻辑修改导致的。

后来,把阿里客户端实例创建的逻辑转移到全局变量部分,问题解决。

参考代码如下:

let OSS = require('ali-oss');
const { size } = require('underscore');
const { exit } = require('process');
const { text } = require('express');

let client = new OSS({
    region: 'oss-cn-beijing',
    accessKeyId: 'LTA*LxRm*iGz175*Cuz',
    accessKeySecret: '0A6*WbZm0*b9t*VT',
    bucket: 'ffmpeg-zz',
    secure:true,
});

结尾

其实,实际开发过程中,InvalidAccessKeyIdError 报错的情况还是很常见的,但是原因多种多样,本人遇到的问题只是其中的一种情况,最后总结一下,他人遇到的该报错的原因和解决方法。

1)创建OSS客户端实例的时候,增加配置项 stsToken: res.data.securityToken;

2)确实是App ID错误了,粘贴的时候漏掉了部分字符信息。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐