python - 我们可以在调用时设置 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;
解决方案
遗憾的是,您无法在调用期间设置环境变量,因为它们是 lambda 配置的一部分。因此,您可以使用update-function-configuration API 调用仅在未发布的函数中设置它们的值。如果函数已发布(即它有一个版本),那么环境变量是不可变的。
作为一种解决方法,您可以SERVICE_UP
在外部存储变量,例如在AWS Systems Manager Parameter Store中以在调用之间保持其值。
如果您的函数未发布,另一种解决方法是在函数中使用 AWS 开发工具包进行调用update-function-configuration
,以便函数更新自己的环境变量。
对于值的短期存储SERVICE_UP
,您可以使用在函数执行之间持续一段时间的AWS Lambda 执行上下文。但它不是永久的。