如何从AWS lambda java中的类路径加载属性文件

时间:2016-02-12 06:28:15

标签: amazon-s3 aws-sdk aws-lambda aws-java-sdk

我编写了AWS lambda函数,因为我想从属性文件中读取数据库连接详细信息,并且在我的类路径中,但是我无法加载该文件。这是我的代码:

InputStream input = DBConfiguartion.class.getResourceAsStream("appsettings");

        Reader r = new InputStreamReader(input, "UTF-8");
        Properties prop = new Properties();
        prop.load(r);

如果我通过正常的java控制台应用程序运行此代码,那时它正在运行,但每当我将其作为AWS lambda函数运行时 InputStream 即将为空。

2 个答案:

答案 0 :(得分:6)

你只有一个角色。这是一个工作的例子,我必须做同样的事情:

InputStream is = DBConfiguartion.class.getResourceAsStream("/lambda.properties");
Properties properties = new Properties();
properties.load(is);

在构建部署jar时,这适用于以下maven文件结构:

  • 项目
  • 项目/ SRC /主/ JAVA
  • project / src / main / java / com / something / DBConfiguartion.java -
  • 项目/ SRC /主/资源
  • 项目/ SRC /主/资源/ lambda.properties

答案 1 :(得分:2)

如果要加载属性文件,可以使用ResourceBundle加载属性。

String version = ResourceBundle.getBundle("lambda").getString("version");

与将文件作为InputStream加载不一样,但这对我有用。在maven项目中,文件需要位于:

  • 项目/ SRC /主/资源/ lambda.properties

我有一个简单的Hello-World Lambda,它从github上的属性文件中读取当前版本。