我有一个AWS
Lambda函数对Kinesis Firehose
执行操作。
该功能使用退避机制。 (此时我觉得浪费了我的计算时间)。
但无论如何,在我的代码的某些方面,我想失败执行。 我应该使用什么命令才能使执行停止?
P.S。 我发现有一些命令如:
context.done()
context.succeed()
context.fail()
我必须告诉你,我无法在AWS
文档中找到有关这些命令的任何文档。
答案 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)
因此,电子邮件仅发送一次。希望对您有所帮助!