Deploy to AWS ElasticBeanstalk
Learn how easy is to deploy a Micronaut App to Elastic Beanstalk.
Authors: Sergio del Amo
Micronaut Version: 1.2.7
1 Getting Started
In this guide, you will learn how to deploy a Micronaut app to AWS Elastic Beanstalk.
AWS Elastic Beanstalk is an easy-to-use service for deploying and scaling web applications and services developed with Java.
1.1 What you will need
To complete this guide, you will need the following:
-
Some time on your hands
-
A decent text editor or IDE
-
JDK 1.8 or greater installed with
JAVA_HOME
configured appropriately
You will need also an AWS Account.
1.2 Solution
We recommend you to follow the instructions in the next sections and create the app step by step. However, you can go right to the completed example.
-
Download and unzip the source
or
-
Clone the Git repository:
git clone https://github.com/micronaut-guides/micronaut-elasticbeanstalk.git
Then, cd
into the complete
folder which you will find in the root project of the downloaded/cloned project.
2 Writing the App
Create the microservice:
mn create-app example.micronaut.complete
Micronaut management dependency adds support for monitoring of your application via endpoints: special URIs that return details about the health and state of your application.
Add the management
dependency:
implementation "io.micronaut:micronaut-management"
Once you include the management
dependency a /health
endpoint is exposed.
Create a test which verifies it:
package example.micronaut;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.client.HttpClient;
import io.micronaut.http.client.annotation.Client;
import io.micronaut.test.annotation.MicronautTest;
import org.junit.jupiter.api.Test;
import javax.inject.Inject;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
@MicronautTest (1)
public class HealthTest {
@Inject
@Client("/")
HttpClient client; (2)
@Test
public void testHealthRespondsOK() {
Map m = client.toBlocking().retrieve(HttpRequest.GET("/health"), Map.class); (3)
assertNotNull(m);
assertTrue(m.containsKey("status"));
assertEquals(m.get("status"), "UP");
}
}
1 | Annotate the class with @MicronatTest to let Micronaut starts the embedded server and inject the beans. More info: https://micronaut-projects.github.io/micronaut-test/latest/guide/index.html. |
2 | Inject the HttpClient bean in the application context. |
3 | Creating HTTP Requests is easy thanks to Micronaut’s fluid API. |
3 Deploy to Elastic Beanstalk
Generate a Fat Jar with gradle command.
$ ./gradlew shadowJar
$ du -h build/libs/complete-0.1-all.jar
11M build/libs/complete-0.1-all.jar
The next screenshots illustrate the steps necessary to deploy a Micronaut app to AWS Elastic Beanstalk:



-
Select Java Platform.
-
Click Upload button

Upload your JAR.

Before you create the environment click "Configure more options". If you forget, you could change this after you created the environment.
By default, Micronaut applications will listen on port 8080. Elastic Beanstalk assumes that the application will listen on port 5000. There are two ways to fix this discrepancy: change the port Elastic Beanstalk is configured to use, or change the port the Micronaut application listens on. For this post, we will change the port the Micronaut application listens on.
The easiest way to do this is to specify the MICRONAUT_SERVER_PORT environment variable in the Elastic Beanstalk environment and set the value to 5000. (The configuration property name is micronaut.server.port
, but Micronaut allows you to specify a more environment variable-friendly name).
On the Configuration page in your environment, under Software Configuration, click the settings icon.


Now you are ready to click Create Environment.

After a few minutes you will be able to access the /health
endpoint.

4 Next Steps
Explore more features with Micronaut Guides.