首页 > 解决方案 > AWS S3 预签名 URL 错误

问题描述

我正在构建一个节点应用程序,并且我有一个现有的带有上传图像的 AWS 账户。

这是我的代码,我遵循了之前发布的文档和其他一些问题:

const AWS = require('aws-sdk');

const s3 = new AWS.S3();
AWS.config.update({
  accessKeyId: 'string',
  secretAccessKey: 'string',
  region: 'string'
 });
const myBucket = 'string-bucket';
const myKey = 'file-name.png';
const signedUrlExpireSeconds = 60 * 5;

const params = { Bucket: 'string-bucket' };
s3.headBucket(params, function(err, data) {
  if (err) console.log('there is an error!!!!', err, err.stack);
  else     console.log('this is what i got', data);
});

const url = s3.getSignedUrl('getObject', {
  Bucket: myBucket,
  Key: myKey,
  Expires: signedUrlExpireSeconds
});

console.log(url);

首先它记录了 url: https://s3.amazonaws.com/,只是这个,没有附加任何字符串,对于存储桶来说是 says CredentialsError: Missing credentials in config

我看不到我缺少什么,它们的键是正确的(我复制并粘贴了它们)

标签: node.jsamazon-web-servicesamazon-s3

解决方案


问题是您在初始化 S3 开发工具包后更新 AWS 配置。只需将以下代码段放在上面const s3 = new AWS.S3();

AWS.config.update({
  accessKeyId: 'string',
  secretAccessKey: 'string',
  region: 'string'
});

最后你应该有这样的东西:

const AWS = require('aws-sdk');
AWS.config.update({
  accessKeyId: 'string',
  secretAccessKey: 'string',
  region: 'string'
});
const s3 = new AWS.S3();

推荐阅读