尝试上载到S3时的InvalidAccessKeyId [英] InvalidAccessKeyId while trying to upload to s3

查看:27
本文介绍了尝试上载到S3时的InvalidAccessKeyId的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用aws-sdk将文件上载到S3。我正在使用

配置我的凭据
aws.config.update({
  accessKeyId: aws.config.credentials.accessKeyId,
  secretAccessKey: aws.config.credentials.secretAccessKey,
  region: 'us-east-1'
});

然后使用multer-s3上传:

const s3 = new aws.S3();

const upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: 'my-bucket-v1',
    acl: 'public-read',
    contentType: multerS3.AUTO_CONTENT_TYPE,
    key: function (req, file, cb) {
      const today = new Date();
      cb(null, file.originalname)
      console.log("file
", file);
    }
  })
}).array('upl', 1);

router.post('/api/upload', (req, res, next) => {
  upload(req, res, err => {
    if (err) return console.log("err
", err);
    res.status(201).send();
  })
});

我不断收到的错误是我的访问密钥ID:"The AWS Access Key Id you provided does not exist in our records."

我已在我的AWS帐户中创建了多个新访问密钥,但都不起作用。我正在使用root用户访问密钥(我尝试了IAM用户,但仍然不起作用)。

我还在节点服务器(console.log(s3))中记录了我的AWS凭据,它与我的AWS安全凭据中的内容相匹配。

如何正确配置我的AWS凭据以上载到S3?

推荐答案

终于想明白了。在multer对象中使用访问键之前,我必须在初始化s3的位置设置访问键。

const s3 = new aws.S3({
  accessKeyId: ACCESS_KEY_ID // Set access key here
  secretAccessKey: SECRET_ACCESS_KEY,
});

const upload = multer({
  storage: multerS3({
    s3: s3, // Use s3 instance here
    bucket: 'my-match',
    acl: 'public-read',
    contentType: multerS3.AUTO_CONTENT_TYPE,
    key: function (req, file, cb) {
      const today = new Date();
      cb(null, file.originalname)
      console.log("file
", file);
    }
  })
}).array('upl', 1);

我仍然不明白为什么以前的实现不再起作用,但至少这种方式可以起作用。

这篇关于尝试上载到S3时的InvalidAccessKeyId的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆