DEV Community

Cover image for Run Springboot application with Elastic Beanstalk, SSH and EC2
EI Akoji
EI Akoji

Posted on • Edited on

Run Springboot application with Elastic Beanstalk, SSH and EC2

Image description

Recently, I worked on a PoC to create an automated build pipeline for a springboot rest api in elastic beanstalk. Based on prior knowledge related to the use of Amazon EBS, this was expected to be a trivial tasks. Turns out that without a solid knowledge on setting up and managing configurations for AWS resources, doing this can be challenging.

There are a host of pages and videos explaining how to deploy spring/springboot applications to elastic beanstalk. however, I was not lucky enough to find one explaining details of the underlying computing resource for this configuration.

For this post, I am focusing on the configuration required to deploy a java application on elastic bean stalk, using Amazon EBS CLI. This can also be done with AWSCLI, though, EBS CLI is tailored to meet our needs.

Infrastructure Diagram

To run java applications with EBS, we can use several configurations. Deploying an application that runs on scalable EC2 instances is common, hence is used in this guide.

illustration of AWS EBS with EC2 environments

Requirements

  1. You'll obviously need to have an AWS account with the required access level to AWS console.

  2. If you have not done so, install AWSCLI and configure your credentials.

You can create named profiles with your aws credentials and configuration using this guide.

  1. Install EBS CLI

  2. Follow this tutorial to create and deploy a simple springboot application with AWS Elastic Beanstalk. Remember to select "create a new SSH public, private key pair" when prompted to.

Implementation Notes

I noticed that the eb create command fails when the following line is added:

deploy:
  artifact: target/spring-boot-bootstrap-eb.jar
Enter fullscreen mode Exit fullscreen mode

If you get the following error message: ERROR: NotFoundError - Application Version does not exist locally (target/spring-boot-bootstrap-eb.jar). Try uploading the Application Version again.

Remove the deploy artifact configuration and use the following command to create your environment:

$ eb create --source target/spring-boot-bootstrap-eb.jar --$ version spring-boot-bootstrap-eb
Enter fullscreen mode Exit fullscreen mode

Similarly run the following command to deploy

$ eb deploy --version spring-boot-bootstrap-eb
Enter fullscreen mode Exit fullscreen mode

You can review the CLI documentation or use eb command_name --help to view usage of different commands.

SSH to your EC2 Instance

Now you're all set to go!

$ eb ssh
$ cd /var/app/current
$ java -jar application.jar
Enter fullscreen mode Exit fullscreen mode

You can run regular commands as you'd do in a local environment. This can be useful for troubleshooting application instances.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more