node.js - 使用节点从 Amazon S3 下载文件
问题描述
我有一个 MEAN 堆栈应用程序,我试图让用户下载使用亚马逊 S3 存储的文件。我正在为用户生成一个预签名 URL,但是当我在 Chrome 中转到该 URL 时,我收到以下错误消息
The request signature we calculated does not match the signature you provided. Check your key and signing method.
当我从 Postman 查询节点应用程序时,它会生成一个带有问题的预签名 URL,但显然它不起作用。这是我的相关代码:
var express=require('express');
var S3 = require('aws-sdk/clients/s3');
var router = express.Router();
router.get('/api/downloadURL', (req,res,next) => {
const s3 = new S3({
apiVersion: '2006-03-01',
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
signatureVersion: 'v4',
region: 'us-east-2' // region of my bucket and what it says is expected
});
var s3params = {'Bucket': process.env.S3_BUCKET_NAME, 'Key': 'folder1/file.pdf'}
s3.getSignedUrl('getObject', s3params, function(err, url) {
if (err) res.json(err);
res.json(url);
});
});
当邮递员查询时,我得到以下格式的 URL
解决方案
推荐阅读
- python-3.x - 如何通过双端队列旋转队列?
- typescript - 无法在 VSCode 中的 typescript react 文件中键入 css 属性
- flutter - 如何解决不同尺寸的 UI?Mediaquery 不能解决文本 UI
- sql - postgresql中如何处理json数据并放入数组
- reactjs - 世博会的问题,在项目中找不到工具
- r - 分隔数据的字符值(R 代码)
- mongodb - MongoRepository 无法通过 JPA @query 检查条件 NumberLong 字段
- outlook - 如何调试我的 *Outlook* 加载项?究竟是什么打开了 9222 端口?
- hosting - 您如何跟踪和过滤播客统计信息?
- snowflake-cloud-data-platform - 在雪花中使用联合子句更新视图