How to load property file from classpath in AWS la

2019-04-29 17:51发布

问题:

I have written AWS lambda function in that i want to read database connection details from property file and which in my classpath, but I am not able to load that file.Here is my code:

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

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

If I run this code through normal java console application that time it is working, but whenever i run it as AWS lambda function then InputStream is coming null.

回答1:

You are only one character off. Here's a working example that I have to do the same thing:

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

This works with the following maven file structure when building the deployment jar:

  • project
  • project/src/main/java
  • project/src/main/java/com/something/DBConfiguartion.java -
  • project/src/main/resources
  • project/src/main/resources/lambda.properties


回答2:

As you want to load a properties file you can use the ResourceBundle to load the properties.

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

It's not the same as loading file as an InputStream, but this worked for me. In a maven project the file would need to be located at:

  • project/src/main/resources/lambda.properties

I have a simple Hello-World Lambda which reads the current version from a properties file on github.