Aws lambda 如何从一个完整的未来创建Mono

Aws lambda 如何从一个完整的未来创建Mono,aws-lambda,aws-sdk,project-reactor,completable-future,Aws Lambda,Aws Sdk,Project Reactor,Completable Future,我试图将CompletableFuture封装在一个Reactor Mono类型中,以简化转换操作。项目反应堆通常更方便!我在一个AWS Lambda函数中工作,我正在调用AWS服务,如S3、SQS等。。。使用新的AWS Java SDK 2.x版本。这个新的SDK允许对AWS服务进行异步调用,并返回CompleteableFuture对象 例如: S3AsyncClient s3AsyncClient = S3AsyncClient.builder().build(); Mono.fr

我试图将CompletableFuture封装在一个Reactor Mono类型中,以简化转换操作。项目反应堆通常更方便!我在一个AWS Lambda函数中工作,我正在调用AWS服务,如S3、SQS等。。。使用新的AWS Java SDK 2.x版本。这个新的SDK允许对AWS服务进行异步调用,并返回CompleteableFuture对象

例如:

S3AsyncClient s3AsyncClient = S3AsyncClient.builder().build();    
Mono.fromFuture(s3AsyncClient.getObject(b -> 
b.bucket(bucketId).key(objectKey), AsyncResponseTransformer.toBytes()).subscribe()
System.out.println("stuff");
问题是,当我的主代码调用CompletableFuture s3AsyncClient.getObject时,执行线程突然切换到CompletableFuture线程,调用Mono的主方法在CompletableFuture完成之前返回

基本上,从上面的示例来看,stuff字符串在s3AsyncClient.getObject完成之前被打印出来

如何确保Mono和CompletableFuture在同一线程内执行,或者如何确保我的lambda不会在CompletableFuture完成之前终止

对于那些好奇的人来说,我只有在将代码远程部署到AWS Lambda时才会出现这种行为。我在本地没有经历过这种行为…

/。然后应用程序将等待您的未来完成,然后返回Mono Mono.来自未来你可完成的未来。然后应用x->x.剂量测量

//。然后应用程序将等待您的未来先完成,然后返回Mono Mono.来自未来你可完成的未来。然后应用x->x.剂量测量