【问题标题】:Is there a way to check if AWS lambda is running from java code?有没有办法检查 AWS lambda 是否从 java 代码运行?
【发布时间】:2022-01-17 21:16:42
【问题描述】:

有一个 Lambda 说我的 Lambda 名称是 - XYZ,它有一个 s3 文件上传触发器。现在让我们说如果我上传多个文件说大约 100 并且 lambda 执行开始。 有什么方法可以跟踪 lambda 是否正在运行或已处理所有文件?

这样做的原因是,一旦 lambda 完成了对所有文件的处理,我想触发一个步进函数,所以为了触发我的步进函数,我只想在所有文件都由我的 lambda (XYZ)。 仅供参考:目前没有办法跟踪上传了多少文件

【问题讨论】:

  • 您的 Lambda 函数能否确定“最后一个”文件的处理时间?您是否可以修改 Lambda 函数源代码本身,以便触发 Step Function?另外,Java(在你的标题中)与这个问题有什么关系?
  • 您的 Lambda 函数能否确定“最后一个”文件的处理时间? - 否 您是否可以修改 Lambda 函数源代码本身,以便触发 Step Function? - 是的,我可以修改 lambda 代码,但我不想为上传的每个文件运行 step 函数另外,Java(在你的标题中)与这个问题有什么关系? - 不相关,我试图弄清楚我是否可以有一个调度程序来不断检查 lambda 实例是否正在运行,所以我提到它可以是 java、python 或类似的任何东西

标签: amazon-web-services aws-lambda


【解决方案1】:

我认为在 lambda 完成工作而没有完美逻辑事件的情况下运行阶跃函数状态机并不是一个好的设计。

因为您可以例如接收由 lambda 完成的一堆文件(例如 100 个),然后在我们完成自定义指标的 100 个值或检查 DynamoDb 中的值或对象数量后使用 Cloudwatch 警报在自定义文件夹中,触发作业步骤功能,同时您会收到另一个文件,延迟 +5 秒以完成 101,在这种情况下,您可能会错过此文件。

如果您没有完成文件的特殊事件或条件,那么您可以使用时间安排并使用 Cloudwatch 事件(预定事件)触发您的 Step 函数,例如每 15 分钟,检查是否有是工作,如果不是,退出工作。

否则,要么将 lambda(文件过程)作为一个步骤包含在您的步骤函数中,要么更改您的设计。

【讨论】:

  • 一旦所有文件都由 lambda 处理,我们将运行数据爬虫,然后运行一些粘合作业。所以我们不能从 lambda 触发 step 函数或将其作为 step 本身
  • 在你的工作完成后,你可以从rest api(API网关)触发步骤功能,比如post方法
猜你喜欢
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 2012-10-23
  • 1970-01-01
相关资源
最近更新 更多