【问题标题】:Running lambda function where function name like 'my_function'运行 lambda 函数,其中函数名称如“my_function”
【发布时间】:2019-08-23 02:25:31
【问题描述】:

我有 100 个 lambda 函数。它们的函数名称中都有 2 个不同的关键字 -

  1. From_Table
  2. To_Table

例如,我的函数名称是:function1_To_Tablefunction2_From_Table 等。我有 100 个这样的函数,每边 50 个(To,From)

我想创建一个事件,它每 15 分钟调用一次名称中包含上述关键字的所有函数。我不想为所有 100 个 lambda 创建 100 个事件。

类似这样的:Run my function if function name contains - To_Table or From_Table

谁能帮我解决这个问题?

【问题讨论】:

  • 你能详细说明一下场景吗?
  • @GourabPaul 编辑了问题。我有 100 个函数,例如 func1_To_Tablefunc2_From_Table 等。现在我希望所有这些函数每 15 分钟运行一次。而不是创建 100 个事件,我想创建一个事件,例如 - Run my function if function name contains - To_Table or From_Table

标签: amazon-web-services aws-lambda


【解决方案1】:

我认为你的方法是错误的。为每个 lambda 创建 1 个事件不是正确的解决方案,我同意你的看法。而是创建一个 lambda 函数,该函数可以迭代并自行调用 50 个其他函数中的每一个,然后在 Cloudwatch 事件中安排该函数每 15 分钟触发一次。一个事件,一个函数,每个函数执行 50 个 to_from 或 from_to 函数。

参考Can an AWS Lambda function call another

编辑:刚刚想到了一些事情,您的功能是否长期运行?如果他们需要一段时间才能完成,那么第一个功能可能会在完成所有其他 50 个功能之前超时。您可能需要设置 SNS 或 SQS 来触发其他功能。

【讨论】:

  • 当我遍历所有函数并使用调用函数时,它会在 15 分钟内超时。
  • 在您的用例中似乎没有一个优雅的解决方案。与 AWS 最佳实践和 DRY 概念保持一致。像您在问题中提到的那样创建 50 个事件是没有意义的。您是否尝试过使用阶跃函数?这可能是有道理的,有一个调用每个 lambda 函数的 step 函数,然后每 15 分钟在 Cloudwatch 事件上运行一次。 aws.amazon.com/getting-started/tutorials/…
  • 我有一个调用函数,它使用类型 - Event 调用。这在我的笔记本电脑上运行了 45 秒,但在 AWS lambda 上超时
  • 再评论一下,如果您使用 Terraform 和 count 函数,那么设置 50 次 aws 资源迭代非常容易。
  • 您是否为 Lambda 中的该函数分配了足够的 CPU 或内存?
【解决方案2】:

首先,AWS 不提供任何函数来使用正则表达式或使用通配符调用 lambda。 为了调用你所有的函数, 首先,您需要获取 lambda 函数列表。使用 aws cli 你可以运行这个命令

1 - aws lambda 列表函数

2 - 从列表函数的响应中提取与关键字匹配的函数,即 to_from、from_to

3 - 创建一个调用所有提取函数的外观(aws lambda invoke --function-name)

aws 也有 api 来执行 aws-sdk 或 boto3 中的所有功能

【讨论】:

  • 什么是调用函数执行一个需要 15 分钟 + 并超时的函数?有没有一种方法可以让 invoke_function 将函数发送到队列并自行停止运行?
  • 我们可以一次异步调用所有函数触发 lambda 不必等待完成。这仅取决于要求,我对这些问题的理解是@michael 知道功能不会超过 15 分钟。
  • 这听起来像是阶梯函数的任务,但如果遍历所有 50 个 lambda 需要超过 15 分钟,为什么每 15 分钟运行一次?
猜你喜欢
  • 1970-01-01
  • 2022-07-31
  • 2021-12-12
  • 2019-08-16
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
相关资源
最近更新 更多