Java 无法访问Lambda函数中的环境变量
我想从lambda函数中访问环境变量,但是我在实现这一点时遇到了问题 我使用serverless来管理lambda函数的创建和部署。在我的无服务器文件中的一个函数定义中,我定义了两个环境变量:Java 无法访问Lambda函数中的环境变量,java,amazon-web-services,aws-lambda,environment-variables,Java,Amazon Web Services,Aws Lambda,Environment Variables,我想从lambda函数中访问环境变量,但是我在实现这一点时遇到了问题 我使用serverless来管理lambda函数的创建和部署。在我的无服务器文件中的一个函数定义中,我定义了两个环境变量: 功能: 更新项目: 处理程序:。。。 环境: 函数名称:updateItemById 主题名称:${self:custom.topicName} 事件:。。。 在lambda函数中,我访问环境变量TOPIC\u NAME,如下所示: Optional topicName=Optional.of(Syst
功能:
更新项目:
处理程序:。。。
环境:
函数名称:updateItemById
主题名称:${self:custom.topicName}
事件:。。。
在lambda函数中,我访问环境变量TOPIC\u NAME
,如下所示:
Optional topicName=Optional.of(System.getenv(“TOPIC_NAME”));
由于TOPIC\u NAME
环境变量不存在,因此每次执行lambda函数时,此代码都会引发异常。但是,我可以看到环境变量存在于:
- serverless.yml文件
- serverless生成的CloudFormation文件
- AWS控制台中显示的CloudFormation文件
- lambda功能如AWS控制台所示
Map envVars=System.getenv();
对于(字符串s:envVars.keySet()){
System.out.println(s+“-”+envVars.get(s));
}
将显示FUNCTION\u NAME
环境变量,但不显示TOPIC\u NAME
变量。我尝试过重命名、添加和删除环境变量,但这个打印循环的输出没有任何更改。我已经多次重新部署了我的代码,无论有没有代码更改,配置文件更改,我都通过控制台手动添加了环境变量。我已经验证了lambda函数的最新版本正在运行。我所做的一切都不起作用
从行为来看,运行lambda函数的容器似乎从未刷新过,因此始终包含旧的环境变量。然而,这与我读到的所有内容以及我期望lambda容器如何工作背道而驰
${self:custom.topicName}
您需要确保在serverless.yml
中配置了以下顶级引用:
。。。
供应商:aws
自定义:
主题名称:
这确实存在于我的无服务器文件中。无服务器成功生成环境变量;它位于CloudFormation文件中,并根据AWS控制台显示为存在于Lambda函数中。它只是不存在于lambda函数本身中。@Puffin-所以即使手动将变量添加到UI中也不会返回循环的输出?您能否将粘贴链接到完整的serverless.yml(敏感数据根据需要进行模糊处理)。