Сохранение AWS Polly mp3 в личный раздел S3 пользователя Cognito - PullRequest
0 голосов
/ 25 октября 2019

У меня есть приложение, которое позволяет пользователям создавать звуковые истории, загружая собственные аудиоклипы или создавая диалоги с помощью aws polly. Загрузка клипов работает просто отлично, я использую ampify для PUT и GET файлов из корзины s3 с доступом «private».

Проблема: Полли не помещает сгенерированный аудиофайл в то же местов s3 как загруженные аудиофайлы, и я не думаю, что есть какой-либо способ указать уровни защиты при использовании функции startSpeechSynthesisTask Полли. В этом вопросе предлагается, чтобы я мог сделать еще один вызов s3, чтобы изменить ACL объекта. Если это будет работать для моего варианта использования, я бы хотел определить, когда задача speechSynthesis завершена, и автоматически запустить код s3.

Как я могу определить, когда функция startSpeechSynthesisTask завершена? И какие методы s3 мне нужно будет вызывать, чтобы изменить права доступа к объектам для конкретного пользователя Cognito?

Вот как я сейчас вызываю polly из моей лямбды:


  var params = {
    OutputFormat: 'mp3', /* required */
    OutputS3BucketName: `my-bucket`, /* required */
    OutputS3KeyPrefix: '',
    Text: req.body.script, /* required */
    VoiceId: req.body.voice, /* required */

  };
  polly = new AWS.Polly();

  polly.startSpeechSynthesisTask(params, function(err, data) {
    if (err) console.log(err, err.stack); // an error occurred
    else   {
      console.log(data);    
      res.json({success: 'post call succeed!', url: req.url, data: data})
    }
  });
...