AWS Python Lambda 能否在调用时设置环境变量

4

我有一个Python AWS Lambda函数,用于访问REST端点,如果服务/端点已关闭或无法访问,则希望向Teams/Slack频道发送通知。

我不想在服务宕机期间为每个消息都发送此通知。我希望第一次出现问题时发送一条消息,然后在其恢复后再发送另一条消息。

我的想法是设置一个环境变量SERVICE_UP = true。如果收到指示服务宕机的错误,我们将通知频道并设置SERVICE_UP = false,当它再次更改时,我们将发送一条通知,说明服务已恢复,并将SERVICE_UP = true。

我试图实现的伪代码,或者也可以考虑其他建议,不确定DynamoDB表是否过于繁琐?

if (SERVICE_UP == true):
   if (failed_call):
     send_notification()
     SERVICE_UP = false;

if (SERVICE_UP == false):
   if (successful_call):
     send_notification()
     SERVICE_UP = true;
2个回答

3
很遗憾,无法在调用期间设置环境变量,因为它们是Lambda配置的一部分。因此,您只能使用update-function-configuration API调用仅在未发布的函数中设置它们的值。如果函数已发布(即它具有版本),则环境变量是不可变的。
作为解决方法,您可以将变量SERVICE_UP存储在外部位置,例如AWS Systems Manager Parameter Store,以保留其在调用之间的值。
另一个解决方法,如果您的函数未发布,则可以在函数中使用AWS SDK调用update-function-configuration,以便函数更新自己的环境变量。
对于SERVICE_UP值的短期存储,您可以使用AWS Lambda执行上下文,该上下文在某些时间内持续保留函数执行之间的数据。但它并不是永久性的。

谢谢,这是很好的信息。如果有版本,你指的是什么? - AnonymousAlias

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接