【问题标题】:How to kill/terminate a running AWS Lambda function?如何杀死/终止正在运行的 AWS Lambda 函数?
【发布时间】:2019-08-15 13:31:57
【问题描述】:

我有一个运行时间约为 10 分钟的 lambda 函数。对 Lambda 的渴望相当长,但考虑到我们当前的需求/设置,它是完成我们需要它做的事情的最简单方法。

但是,最近我们的 Lambda 代码中的一个错误使 lambda 变得混乱,基本上 DOS 我们自己的服务器。这就是我意识到如果需要的话我不知道如何杀死这个过程(而不是等待它结束/超时)。所以...

有没有办法从 AWS 控制台终止正在运行的 lambda 进程?有没有办法通过 AWS CLI 做到这一点?

【问题讨论】:

  • Lambda 的最大运行时间 = 15 分钟,因此即使它无限循环或挂起,也只有 15 分钟才能把事情搞得一团糟。

标签: amazon-web-services aws-lambda


【解决方案1】:

没有办法杀死正在运行的 lambda。但是,您可以将并发限制设置为 0 以阻止它开始更多执行

例如

$ aws lambda put-function-concurrency --function-name my-function --reserved-concurrent-executions 0

https://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html

【讨论】:

  • 默认并发限制是多少? (编辑,nvm发现是1000 by default
  • 虽然这个答案是正确的,并且将适用于函数的未来调用......要终止当前正在运行的 Lambda,您应该删除该函数。这是杀死 CURRENTLY RUNNING Lambdas 的唯一方法。如果您使用的是基础架构即代码,那么稍后重新创建 Lambda 应该不是问题。
【解决方案2】:

ubi's 回答之后,您还可以通过 AWS 控制台设置并发。转到您要停止的 Lambda 并单击 Throttle 按钮:

您将获得一个模式,解释并发将设置为 0,并且不再运行 Lambda:

【讨论】:

    【解决方案3】:

    为了停止处于无限循环中的 Lambda 函数,因为我在 S3 存储桶中对 ListObjects 的迭代逻辑中存在错误,我只是更改了 IAM 策略,该策略允许 Lambda 函数访问 S3 存储桶,导致它失败从而打破我的无限循环,该循环旨在在遇到错误时从 Lambda 函数返回。

    【讨论】:

      【解决方案4】:

      我们遇到了 aws lambda 函数连续运行的问题。一个星期后才想出来,当时这是一笔巨额账单。将并发设置为零暂时停止它,但当并发设置恢复正​​常时它又回来了。但是一个简单的技巧拯救了我们,我们撤销了活动会话,从而停止了所有函数调用。 (配置>权限>执行角色)它将名为 AWSRevokeOlderSessions 的内联策略附加到该角色。作业完成后删除此策略。请注意这一点,因为它会停止所有登录用户的所有活动会话。只在不使用的时候这样做。此外,如果您不删除撤销策略,它也会在新会话中产生问题,尽管另有提及。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-10
        • 2021-12-12
        • 2012-03-21
        • 2019-12-14
        • 2019-03-21
        • 1970-01-01
        相关资源
        最近更新 更多