繁体   English   中英

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

[英]aws cli lambda `update-function-configuration` deletes existing environment variables

AWS cil lambda上的文档指出

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

我认为这意味着设置的 rest 仍将保持不变。 但是,假设我的 lambda function 有环境变量:

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"}}'

目的是更新变量: var1var2分别使用新值new_val1new_val2 ,虽然这两个变量确实得到了更新,但是第三个变量var3被删除了!

难道我做错了什么? 或者有没有办法确保这不会发生?

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

使用awscli部分更新 lambda 的环境变量似乎并不容易。

但是通过使用内置的基于 JSON 的客户端过滤(使用JMESPath语法),我找到了一种方法来实现我需要做的事情。

NEW_ENVVARS=$(aws lambda get-function-configuration --function-name your-func-name --query "Environment.Variables | merge(@, \`{\"ENV_VAR_TO_UPDATE\":\"value_here\"}\`)")

aws lambda update-function-configuration --function-name your-func-name --environment "{ \"Variables\": $NEW_ENVVARS }"

当然,您可以使用该技巧更新多个环境变量。

您误解了文档的用意。

您只提供要更改的参数。

--environment是您指定的(单数)“参数”应该更改 - 而不是单个变量。

环境变量是整体配置的,因此没有概念只指定您想要的不同的某些环境变量。

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

描述:Above Command将更新aws中lambda函数的环境变量。

我有同样的问题,我想只更新一个函数的一个env变量而不是触及其余的。

我最终在节点中编写脚本并发布它:

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

使用起来非常简单:

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

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

如果您的变量经常更改,则更好的解决方案可能是使用AWS参数存储。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM