java - 保证在 AWS lambda 退出之前运行函数

标签 java amazon-web-services aws-lambda

JVM 中有没有办法保证某个函数在 AWS lambda 函数退出之前运行?我想将内部缓冲区刷新到标准输出,作为 lambda 函数中的最后一个操作,即使抛出一些异常也是如此。

最佳答案

据我了解,您希望在 Lambda 函数停止之前执行一些代码,无论您的执行状态是什么(运行/等待/异常处理/等)。

这对于 Lambda 来说是不可能的,即没有触发任何事件或类似的东西可以被识别为关闭钩子(Hook)。一旦超时,JVM 将被卡住。不过,您可以使用 Context 对象中的 getRemainingTimeInMillis() 方法观察剩余执行时间。来自 docs :

Returns the number of milliseconds left before the execution times out.

因此,在初始化函数时,您可以安排一项任务,定期检查 Lambda 函数超时之前还剩多少时间。然后,如果只剩下不到 X(毫秒)秒,则执行 Y。

关于java - 保证在 AWS lambda 退出之前运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54844983/

相关文章:

java - 代码不起作用,但我没有收到错误消息

java - 如何将文件读入二维数组,无论它们在 java 中是空格还是换行符分隔?

javascript - 如何使AWS S3请求可重试?

java - 如何使管道与 Runtime.exec() 一起工作?

java - 注销后用户也正在执行操作,我必须编写什么代码来防止注销用户?

php - 从 PHP SDK 获取 AWS IAM 凭证

amazon-web-services - AWS CloudFormation 部署覆盖 "name"标签?

java - AWS Lambda 反序列化器/LinkedHashmap 无法转换

amazon-web-services - 无法在没有代码的情况下使用 CloudFormation 创建 AWS Lambda

amazon-web-services - VPC 中的 Lambda 无法访问互联网