【发布时间】:2021-08-22 17:52:46
【问题描述】:
在基于 Node.js12.x 的 Lambda 函数中,我正在尝试
- 从 S3 下载对象
- 如果 S3 中不存在对象,则从 Web 下载文件
- 通过下载的数据,无论其如何到达多个写入流
我试过了
var request = require('request');
const readStream = ({ Bucket, Key }) => {
s3.getObjectMetadata({ Bucket, Key })
.promise().then(() => {
return s3.getObject().createReadStream();
})
.catch(error => {
if (error.statusCode === 404) {
return request.get('http://example.com/' + Key);
}
});
};
readStream({ ... })
.pipe(sharp().resize(w, h).toFormat('png'))
.pipe(writeStream);
如果对象在 s3 中可用,上述方法有效,但 catch 块不起作用。
我需要await 或request.get 上的承诺吗?
我也尝试过没有运气
http.get('http://example.com/' + Key, function(response) {
return response;
});
【问题讨论】:
标签: node.js amazon-web-services amazon-s3