我有一个lambda函数,当某些条件出现在SQL数据库中时,该函数会向AWS SNS发送消息。此lambda函数每5分钟触发一次以检查这种情况。
它工作正常,并发送适当的消息。但是,一旦它发送了消息,我不希望它每5分钟发送一次,直到它解决为止。我希望它仅每5个小时发送一次此消息。主要是因为如果我周末不在家时,不想离开计算机时每隔5分钟就收到一封电子邮件或短信。
一个可能的解决方案是让一个环境变量存储上次发送消息的时间LastTimeMessageSent。获取环境变量的值很容易,并且效果很好
Environment.GetEnvironmentVariable("LastTimeMessageSent");
但是,当我这样做
Environment.SetEnvironmentVariable("LastTimeMessageSent", DateTime.UtcNow.ToString());
它不起作用。没有异常或错误消息。我似乎在文档或网络中找不到任何描述如何执行此操作或解释为什么此操作不起作用的地方。
如何设置环境变量?如果我无法在lambda中执行此操作,那么完成我需要完成的工作的正确方法是什么?
答案 0 :(得分:3)
AWS Lambda函数在临时容器环境中运行。它们还可以在许多主机系统上并行运行。
虽然Lambda函数可以访问环境变量,但这些变量是在为Lambda函数创建容器时专门设置的。该功能运行完毕后,可能会丢弃该环境。 (如果经常调用一个函数,则可能保留环境 以便将来执行。)
因此,使用环境变量不是持久存储数据的方法。
其他一些选项是: