9

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.

Mahesh
  • 127
  • 1
  • 1
  • 10

2 Answers2

10

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
bclemenzi
  • 144
  • 1
  • 4
  • i'm having same problem as specified in the issue description. Now when i change the property file name to begin with forward slash(/), then my local JUnit test is failing. – naresh goty Oct 19 '16 at 14:01
  • @greg . Can you check below UdoHeld's solution. He is suggesting to use **ResourceBundle** – Mahesh Aug 17 '17 at 06:15
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.

Udo Held
  • 12,314
  • 11
  • 67
  • 93