[英]Trying to send readable stream (audio) to amazon s3 - runtime error
我正在尝试编写一个函数,该函数采用录音的mp3 url,然后将其上传到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函数将解析所有链接并将所有链接存储在用于音频播放的数组中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.