Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Lambda函数超时之前获取aws转录响应_Java_Amazon Web Services_Aws Lambda_Aws Transcribe - Fatal编程技术网

Java 在Lambda函数超时之前获取aws转录响应

Java 在Lambda函数超时之前获取aws转录响应,java,amazon-web-services,aws-lambda,aws-transcribe,Java,Amazon Web Services,Aws Lambda,Aws Transcribe,我有一个用Java编写的AWS Lambda函数。此函数启动转录作业,然后等待响应,如下所示: while( true ){ transcriptionJob = awsClient.getTranscriptionJob(getJobRequest).getTranscriptionJob(); if( transcriptionJob.getTranscriptionJobStatus().equals(TranscriptionJobStatus.COMPLETED.nam

我有一个用Java编写的AWS Lambda函数。此函数启动转录作业,然后等待响应,如下所示:

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分钟才能完成,但Lambda函数仅限于5分钟。 目前还没有“转录作业完成事件”或类似事件


是否有解决此问题的方法,还是必须从AWS Lambda切换到其他方法?

我使用Step函数创建了一个解决方法


aws论坛上还有一个关于这个问题的问题。

它看起来像是aws Transcribe拥有的而不是您拥有的bucket中的最终响应点中的TranscriptFileUri,因此您无法从上传到那里的JSON响应文件触发Lambda。因此,有两个选项可以在一个时间表上运行第二个Lambda,该时间表只需查询作业状态以完成,然后启动下一个操作。或者,更好的是,您可以使用Step函数构建这个简单的工作流。谢谢您的输入。我将尝试步骤函数并在此处更新我的结果。您可以使用步骤函数编排较长时间运行的工作流或将lambda函数组合在一起,