У меня есть приложение, которое позволяет пользователям создавать звуковые истории, загружая собственные аудиоклипы или создавая диалоги с помощью 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})
}
});