如何使AWS Lambda停止执行?

时间:2016-07-29 13:22:19

标签: amazon-web-services aws-lambda aws-sdk

我有一个AWS Lambda函数对Kinesis Firehose执行操作。 该功能使用退避机制。 (此时我觉得浪费了我的计算时间)。

但无论如何,在我的代码的某些方面,我想失败执行。 我应该使用什么命令才能使执行停止?

P.S。 我发现有一些命令如:

  • context.done()
  • context.succeed()
  • context.fail()

我必须告诉你,我无法AWS文档中找到有关这些命令的任何文档。

2 个答案:

答案 0 :(得分:3)

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

检查:Using the Callback Parameter in Lambda以获取有关如何利用此功能的更多信息。

答案 1 :(得分:0)

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

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

代码使用Python,但是我确定您可以使用任何其他语言来应用相同的逻辑。这个想法是让我的lambda函数在“重试”的剩余时间内“入睡”。

完整的示例可能像这样:

... 
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) 

因此,电子邮件仅发送一次。希望对您有所帮助!