【发布时间】:2021-03-18 15:17:23
【问题描述】:
我对@987654321@ 不是很熟悉。所以我要做的是将S3 中的一个对象通过管道输出到/tmp 文件夹中,进行一些处理,然后将其放回另一个S3 存储桶中。
但是发生的事情是它会进入uploadToS3()函数,但不知何故它不会触发fs.readFile。所以在登录inside uploadToS3 function 后,它进入.then() 并记录'ends here'。
const s3 = new AWS.S3();
const fs = require('fs');
const pipeObject = async() => {
var params = { Bucket: 'testbucket', Key: 'test.txt' };
var file = fs.createWriteStream('/tmp/test.txt');
await s3.getObject(params).createReadStream().pipe(file);
}
const uploadToS3 = async() => {
console.log('inside uploadToS3 function');
fs.readFile('/tmp/test.txt', function (err, data) {
console.log('inside readFile'); //code does not reach here
if (err) {
throw err;
}
var base64data = new Buffer(data, 'binary');
var s3 = new AWS.S3();
var s3upload = s3.putObject({
Bucket: 'testbucket2',
Key: 'output-test.txt',
Body: base64data
},function (resp) {
console.log('Done');
});
});
}
exports.handler = async (event) => {
var params = { Bucket: 'testbucket', Key: 'test.txt' };
var file = fs.createWriteStream('/tmp/test.txt');
try{
await pipeObject().then(response => {
if (fs.existsSync('/tmp/test.txt')) {
console.log('test.txt file exists.');
uploadToS3().then(response => {
console.log('ends here');
});
}
});
}catch(err){
console.log(err);
}
};
【问题讨论】:
标签: node.js amazon-web-services lambda