【问题标题】:How do I inject environment variables to Lambda running under sam local?如何将环境变量注入在 sam local 下运行的 Lambda?
【发布时间】:2021-11-16 05:07:52
【问题描述】:

我正在使用 AWS SAM 在本地开发 aws lambda。
我正在尝试注入环境变量,但没有成功。
Lambda 代码是:

exports.lambdaHandler = async (event, context) => {
    console.log('INJECTED ENVIRONMENT:',JSON.stringify(process.env));
    response = {
        'statusCode': 200,
        'body': "booo"
    }
    return response;
};

环境文件test.json为:

{
  "parameters": {
    "PPPPPPPPPPPPPPPPPPPPP1": "PPPPPPPPPPPPPPPPPPPPP1",
    "PPPPPPPPPPPPPPPPPPPPP2": "PPPPPPPPPPPPPPPPPPPPP2",
    "PPPPPPPPPPPPPPPPPPPPP3": "PPPPPPPPPPPPPPPPPPPPP3"
  }
}

我正在运行 lambda。它运行正常,向我显示了预期的输出,除了我尝试定义的环境变量。
sam local invoke -e events/event.json -n test.json

我错过了什么?

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda environment-variables aws-sam


    【解决方案1】:

    环境变量文件具有它需要遵循的特定格式,这取决于您要测试的 lambda 函数的逻辑 ID:

    Test.json:

    {
      "LogicalIdOfLambdaHere":{
        "ENV_VAR_KEY": "value"
      }
    }
    

    确保逻辑 ID 与您的 sam 模板中定义的 ID 匹配。或者,您可以使用Parameters 而不是parameters

    请注意,您还需要在实际的 SAM 模板中定义相同的变量。 此方法用于覆盖模板中指定的值,而不是添加模板中未定义的新值。变量也区分大小写:)

    【讨论】:

    • 我确实尝试了所有这些选项 - 我会再次验证,以防我有错字并相应地更新我的问题。
    • 请注意,您还需要在实际的 SAM 模板中定义相同的变量。此方法用于覆盖模板中指定的值,而不是用于添加未在模板中定义的新值。变量也区分大小写:)
    • 做到了,您能否在答案中以粗体添加“注意您还需要在实际的 SAM 模板中定义相同的变量”的部分 - 所以我可以接受它
    • 按要求完成
    猜你喜欢
    • 2019-09-21
    • 2021-12-28
    • 2021-04-15
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 2021-03-24
    • 2018-06-14
    相关资源
    最近更新 更多