关于amazon web服务:如何使AWS Lambda停止执行?

How to make AWS Lambda stop execution?

我有一个AWSlambda函数对Kinesis Firehose执行操作。该函数使用后退机制。(这时我想浪费我的计算时间)。

但是无论如何,在我的代码中的某个点上,我希望执行失败。我应该使用什么命令来停止执行?

附笔。我发现有如下命令:

  • 埃多克斯1〔2〕
  • 埃多克斯1〔3〕
  • 江户十一〔四〕号

我得告诉你,我在AWS文档中找不到关于这些命令的任何文档。


这些方法仅用于向后兼容性,因为它们最初是与node.js v0.10.42一起引入的。如果使用Nodejs版本4.*或6.*。使用callback()功能。

检查:有关如何利用此函数的详细信息,请使用lambda中的回调参数。


这是我的解决方案(可能不完美,但对我有用)

1
time.sleep(context.get_remaining_time_in_millis() / 1000)

代码是用Python编写的,但我相信您可以使用任何其他语言应用相同的逻辑。我的想法是让lambda函数在剩余的"重试"时间内"休眠"。

完整的例子如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
some code that processes logs from CloudWatch when my ECS container stops(job is finished)
...

# Send an email notification
sns_client = client('sns')
                  sns_client.publish(
                      TopicArn=sns_topic,
                      Subject="ECS task success detected for container",
                      Message=json.dumps(detail)
                  )
                  # Make sure it was send only once, therefore 'sleep'
                  # untill lambda stops 'retries'
                  time.sleep(context.get_remaining_time_in_millis() / 1000)

因此,电子邮件只发送一次。希望有帮助!