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

标签 java amazon-web-services aws-lambda amazon-transcribe

我有一个用 Java 编写的 AWS Lambda 函数。该函数启动一个 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 分钟才能完成,但 Lambda 函数的时间限制为 5 分钟。 目前还没有“转录作业完成事件”或类似的事件。

这个问题有解决方法吗?还是我必须从 AWS Lambda 切换到其他东西?

最佳答案

我使用 Step Functions 创建了一个解决方法。

enter image description here

还有一个thread在 aws 论坛上了解此问题。

关于java - 在 Lambda 函数超时之前获取 aws 转录响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50177653/

相关文章:

java - 使用子类异常实现接口(interface)

node.js - 如何在部署的 Lambda 函数中查看 console.log 语句

node.js - 如何使用 Node.js 从 AWS CloudFront 连接到 AWS ElastiCache 集群?

node.js - 在 Jenkins 中构建成功,但 AWS-Codebuild 出现插件错误

python-2.7 - 如何让 Amazon API Gateway 只接受来自特定主机的请求

java - 何时更喜欢 EJB 而不是 GWT Servlet

java - 单精度和 double 浮点值有什么不同?

ruby - 配置 Lambda 函数(Ruby) 来访问 Amazon RDS(mysql) 并执行 CRUD 操作

amazon-web-services - 没有这样的文件或目录加载 libssl.so.1.0.0

java - 我是否需要内部类的 @Named 注释