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.
You can configure a function to mount an Amazon Elastic File System (Amazon EFS) file system to a local directory. With Amazon EFS, your function code can access and modify shared resources safely and at high concurrency.
You can now control the amount of ephemeral storage a function gets for reading or writing data, allowing you to use AWS Lambda for ETL jobs, ML inference, or other data-intensive workloads. With increased AWS Lambda ephemeral storage, you get access to a secure, low-latency ephemeral file system up to 10 GB.
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:
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:
I have a simple Hello-World Lambda which reads the current version from a properties file on github.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With