aws cli lambda`update-function-configuration`删除现有的环境变量

时间:2018-09-28 05:14:18

标签: amazon-web-services aws-lambda environment-variables aws-cli

AWS cil lambda上的文档指出

...You provide only the parameters you want to change...

我认为这意味着其余设置将保持不变。 但是,说我的lambda函数具有环境变量:

var1=old_val1

var2=old_val2

var3=old_val3

然后当我尝试做这样的事情时:

aws lambda update-function-configuration --function-name dummy_fun --environment '{"Variables":{"var1":"new_val1","var2":"new_val2"}}'

旨在更新变量: var1 var2 分别具有新值 new_val1 new_val2 ,尽管这两个变量 DO 得到更新,但是第三个 var3 被删除!

我做错什么了吗?还是有办法确保这种情况不会发生?

我绝对可以使用一种变通方法来处理它,在此方法中,我可以获取当前配置,然后在本地更新env变量,然后通过python代码等推送所有更新的配置。 但是,那是唯一的方法吗?还是可以有一种更简单的方法?

3 个答案:

答案 0 :(得分:3)

您误解了文档的意图。

  

您仅提供要更改的参数。

"Successful Delete"是您要更改的(单个)“参数”,而不是单个变量。

环境变量已被整体配置 ,因此没有概念仅指定您希望与众不同的某些环境变量。

答案 1 :(得分:1)

我遇到了同样的问题,我只想更新一个函数的一个env变量,而不接触其他变量。

我最终在节点中编写了一个脚本并将其发布:

https://www.npmjs.com/package/aws-lambda-update-env

使用非常简单:

update-lambda-env KEY "My New Test Value" --stack-name myApplicationStack

这只会更改堆栈中位于函数中的变量 KEY myApplicationStack

如果您的变量经常更改,那么更好的解决方案可能是使用AWS Parameter Store。

https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html

答案 2 :(得分:1)

aws lambda update-function-configuration --function-name my-function-name --environment Variables="{VAR1=variable_value, VAR2=variable_value}" 

描述:以上命令将更新aws中lambda函数的环境变量。