AWS nodejs lambda函数,动态更改环境变量的值



我在AWS上运行一个lambda函数,它需要很长时间才能执行(大数据(。它超过了lambda中允许的最大900秒(15分钟(,因此函数超时。

使用context.getRemainingTimeInMillis((,我想在获得超时之前触发lambda的一个新实例。然而,看起来没有办法停止lambda的执行,一旦它启动,这意味着如果我犯了任何错误,我们可以进入一个无限循环,lambda将永远运行??无论如何,为了避免这种情况,我正在考虑设置一个名为"stopExecution";,默认为false,但如果出于某种原因需要停止执行,请将其设置为true。

基本上,在我的nodejs代码中,我读取了变量process.env.stopExecution。现在,我的问题是,lambda中的环境变量是动态的吗?如果我在执行过程中更改值,lambda将读取新值并因此停止?或者环境变量只在函数启动时读取,并且在执行过程中保持相同的值,所以读取新值的唯一方法是等待它们停止并再次启动?

此外,如果有些人和我一样面临同样的问题,并想提出一个更好的解决方案,请放心。

不过,为了回答这个问题,有很多方法可以通过将状态存储在DynamoDB、S3、Parameter存储中并刷新状态,使Lambdas在本质上更具动态性。但是,我不会用它来解决你的问题。我个人以前去过那里,事情确实开始变得复杂起来。我会尝试执行一种更为map reduce类型的方法(有时也很复杂(,或者使用一种在运行后终止的EC2(KISS方法(。

如果您需要变量,请尝试参数存储,我建议您使用新的AWS BATCH无服务器执行脚本。

最新更新