【问题标题】:How to add an environment variable to AWS Lambda without removing what's there?如何在不删除现有内容的情况下向 AWS Lambda 添加环境变量?
【发布时间】:2020-09-22 21:05:17
【问题描述】:

有没有办法在不删除已经存在的环境变量的情况下向 AWS Lambda 函数添​​加新的环境变量?

(使用命令行工具,也就是。)

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    使用 Lambda 控制台,您可以添加新的环境变量:

    使用 CLI 更难 - aws lambda update-function-configuration 允许您有选择地更新 lambda 的各个方面,但没有辅助方法来附加环境变量。您可以使用aws lambda get-function-configuration 获取当前 环境变量列表。它可以与一些 bash/powershell 脚本(或使用匹配的 SDK 函数选择的语言)结合使用。

    例如:

    const AWS = require('aws-sdk');
    const lambda = new AWS.lambda();
    
    const FunctionName = 'FUNCTION_NAME';
    const AppendVars = { key: value };
    
    async function appendVars() {
      const { Environment: { Variables } } = await lambda.getFunctionConfiguration({ FunctionName }).promise();
      await lambda.updateFunctionConfiguration({
        FunctionName,
        Environment: { Variables: { ...Variables, ...AppendVars } },
      }).promise();
    }
    
    appendVars();
    

    【讨论】:

    • 是的,我希望有人可能会在 bash 方面有足够的技能来插话。“哦,只要把这个输出输入这个命令就可以了,”或者类似的话。一厢情愿:)
    • 唉,那个人不是我!如果您想尝试使用 bash 进行 JSON 操作,您应该查看类似于 sed 但为 JSON 制作的“jq”。作为观察,我们只是在每次环境变量集更改时重新部署;这样您就可以获得完整的提交历史记录。
    【解决方案2】:

    我成功地将其用作 bash 脚本。

    lambda 函数的名称来自一个参数。我的目标是简单地更改一个变量,以便重新启动 lambda 函数。

    LAMBDA=$1
    
    CURRENTVARIABLES=$(aws lambda get-function-configuration --function-name $LAMBDA | jq '.Environment.Variables')
    NEWVARIABLES=$(echo $CURRENTVARIABLES | jq '. += {"kick":"'$(getrandom 8)'"}')
    COMMAND="aws lambda update-function-configuration --function-name $LAMBDA --environment '{\"Variables\":$NEWVARIABLES}'"
    eval $COMMAND
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 2013-07-12
      • 2016-12-29
      • 2017-12-17
      • 2017-11-04
      相关资源
      最近更新 更多