首页 > 解决方案 > 我们可以在调用时设置 AWS python lambda 的环境变量吗

问题描述

我有一个命中 REST 端点的 python AWS lambda,如果服务/端点已关闭或无法访问,我想向团队/松弛通道发送通知。

我不想在服务关闭时继续为每条消息发送此通知。我想在第一次关闭时发送一条消息,然后在它恢复时发送另一条。

我想有一个环境变量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;

标签: pythonamazon-web-servicesaws-lambdaenvironment-variables

解决方案


遗憾的是,您无法在调用期间设置环境变量,因为它们是 lambda 配置的一部分。因此,您可以使用update-function-configuration API 调用仅在未发布的函数中设置它们的值。如果函数已发布(即它有一个版本),那么环境变量是不可变的。

作为一种解决方法,您可以SERVICE_UP在外部存储变量,例如在AWS Systems Manager Parameter Store中以在调用之间保持其值。

如果您的函数未发布,另一种解决方法是在函数中使用 AWS 开发工具包进行调用update-function-configuration,以便函数更新自己的环境变量。

对于值的短期存储SERVICE_UP,您可以使用在函数执行之间持续一段时间的AWS Lambda 执行上下文。但它不是永久的。


推荐阅读