尝试将可读流(音频)发送到 Amazon s3 - 运行时错误



我正在尝试编写一个函数,该函数获取录音的mp3网址,然后将其上传到S3。但是,我不断收到运行时错误,并且从未到达回调。如果我将回调移到s3.upload(...)下面,则永远不会记录"尝试上传 mp3"语句。

exports.handler = function(context, event, callback) {
const twiml = new Twilio.twiml.VoiceResponse();
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
var getUri = require('get-uri');
AWS.config.update({
accessKeyId: "...",
secretAccessKey: "..."
});
var client = context.getTwilioClient();
const recording_id = event.RecordingSid;
const uri = event.RecordingUrl + ".mp3";
getUri(uri, function (err, rs) {
if (err) {
console.log(err.message);
throw err;
}
var params = {
ACL: "public-read",
Body: rs,
Bucket: "...",
Key: "audio.mp3",
ContentType: 'audio/mp3'
};
s3.upload(params, function(err,data) {
console.log("attempting to upload mp3");
if (err) {
console.log("there is an error");
console.log(err.status);
throw err.message;
}
else {
console.log("Your upload has been successful.");
}
callback(null, twiml);
});
});

console.log("at the end");
};

还有其他方法可以访问录音并将它们放入我的公共 s3 存储桶中吗?为什么这从不执行s3.upload(...).
对此的任何见解都是有帮助的!提前感谢!

app.get('/uploadsong',function(req,res){
console.log("Hi there")
var URI = 'http://sensongsmp3download.info/Kaala%20(2018)%20-%20Sensongsmp3.info/Thanga%20Sela%20--%20Sensongsmp3.Info.mp3';
var buffer = [];
request
.get(URI)
.on('error', function(err) {
console.log("error")
}).on('data',function(data){
buffer.push(data);
}).on('end',function(){
var completeSong = Buffer.concat(buffer);
var data = {
Body:completeSong,
Key: 'sample.mp3',
ContentType: 'audio/mp3'
}
s3Bucket.putObject(data, function(err, data){ 
if (err) 
{ 
console.log('Error uploading data: ', data); 
} else 
{
console.log('upload successfull')
res.send('done');
}
})

})
})

这是我使用的模块

var request = require('request');

我就此联系了 Twilio,他们回应说 Twilio 函数有严格的 5 秒超时,从 Twilio 函数上传到 S3 存储桶需要超过 5 秒。我的解决方法是发送一个字符串,所有 mp3 URL 都用逗号和空格分隔。然后,lambda 函数将解析所有链接并将所有链接存储在一个用于音频播放的数组中。

最新更新