У меня есть функция AWS Lambda, написанная на Java. Эта функция запускает TranscriptionJob, а затем ждет ответа, подобного так:
while( true ){
transcriptionJob = awsClient.getTranscriptionJob(getJobRequest).getTranscriptionJob();
if( transcriptionJob.getTranscriptionJobStatus().equals(TranscriptionJobStatus.COMPLETED.name()) ){
System.out.println("AWS transcribe completed with " + transcriptionJob.getMedia().getMediaFileUri());
Date comleption = transcriptionJob.getCompletionTime();
// duration until response in seconds
long duration = (comleption.getTime()-awsTranscribeStart.getTime())/1000;
logger.log("AWS transcribe took " + duration + " seconds\n");
break;
}else if( transcriptionJob.getTranscriptionJobStatus().equals(TranscriptionJobStatus.FAILED.name()) ){
System.out.println("AWS transcribe failed: " + transcriptionJob.getFailureReason());
break;
}
System.out.println("Waiting for response...");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Для моих более длинных аудиофайлов работа по транскрипции занимает до 10 минут, но лямбда-функция ограничена 5 минутами.
Не существует "события завершения транскрипции" или чего-то подобного (пока).
Есть ли решение этой проблемы или мне нужно переключиться с AWS Lambda на что-то другое?