node.js - 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
。
我看不到我缺少什么,它们的键是正确的(我复制并粘贴了它们)
解决方案
问题是您在初始化 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();
推荐阅读
- unit-testing - 如何对 Flutter TextFormField 进行单元测试
- python - Charmap 编解码器无法在 python 中使用 gzipped 文件解码字节错误
- lets-encrypt - dns01 验证:正在颁发证书。颁发的临时证书
- c++ - 在 C++ 中,可以在数组 ref 和指针之间消除歧义吗?
- vue.js - 在 Nuxt 轮播组件中显示视频
- polymer-2.x - 如果尝试从可排序组中仅移动一张卡片,则会拖动两个可排序项目
- php - 有条件作用域的雄辩关系
- android - 匕首范围问题
- javascript - 将输出添加到每个 for 循环的数组
- javascript - 返回被 Promise 包裹的 fetch 和返回 fetch 一样吗?