繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM