How to Set JVM Arguments (VM Options) in AWS Lambda
We can easily set JVM arguments (e.g. system properties) in our AWS Lambda function through a single environment variable.
Let’s say we have a JAR file that we want to run within an AWS Lambda function.
Example: IntelliJ’s VM Options
In IntelliJ, we might use VM Options
to specify JVM attributes such as stack/heap memory allocation, system properties, GC flags, etc.
Suppose our project specifies two system properties in VM Options
:
-Denv=production -Dport=8080
These may be properties accessed through System.getProperty("env")
or System.getProperty("port")
.
Set properties using JAVA_TOOL_OPTIONS
We can use the JAVA_TOOL_OPTIONS
environment variable to specify properties we would normally specify in the command line, or in IntelliJ’s VM Options
.
The
JAVA_TOOL_OPTIONS
environment variable augments the command line particularly for environments in which a command line is not accessible (like AWS Lambdas).JAVA_TOOL_OPTIONS
makes it possible to add these properties independent of the way the JVM is started.
In our AWS Lambda Configuration
tab, we can modify Environment variables
.
For the key, we can use JAVA_TOOL_OPTIONS
.
For the value, we can use -Denv=production -Dport=8080
.