はじめに
Spring Bootでアプリを作成したので、せっかくならAWSにデプロイしてみようと思い、実際に試してみました。
AWS構成
今回は試験的にAWS環境へデプロイするため、以下のようなシンプルな構成で環境を構築しました。
前提条件
本記事では、すでにEC2インスタンスとRDSインスタンスが作成済みであることを前提とします。
私の場合、以下の環境を用意しました。
・EC2:Amazon Linux 2023
・RDS:MySQL 8.0
手順
EC2にSSH接続
まずは、EC2に接続します。
必要なツールをインストール
今回はGitHubからプロジェクトをEC2にcloneするため、Gitをインストールします。
sudo dnf install -y git
DBとしてMySQLを使用するため、MySQLをインストールします。
sudo dnf -y install https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm
sudo dnf -y install mysql mysql-community-client
Java21でアプリを作成したので、Java21をインストールします。
sudo dnf install -y java-21-amazon-corretto
Spring Bootプロジェクトをビルド・実行するために、Mavenをインストールします。
sudo dnf install -y maven
MySQLへの接続を確認
mysql -h RDSのエンドポイント -u username -p
passwordの入力を求められるので、設定したpasswordを入力します。
以下の画面のように接続が成功することを確認します。
GitHubからプロジェクトをclone
git clone https://github.com/USERNAME/REPOSITORY.git
application.propatiesを編集
application.propatiesを開いてdatabase情報を編集します。
spring.datasource.url=jdbc:mysql://[RDSのエンドポイント]:3306/[DB名]?useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=[RDSのusername]
spring.datasource.password=[RDSのpassword]
SpringBootを起動
mvn spring-boot:run
BUILD FAILURE
私が最初にSpringBootを起動させたとき、次のエラーが発生しました。
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project [プロジェクト名]: Fatal error compiling: error: release version 21 not supported -> [Help 1]
Mavenの maven-compiler-plugin
がJava21をに対応していなかったため、JAVA_HOME
の設定を見直します。
echo 'export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))' >> ~/.bashrc
source ~/.bashrc
その後、再び mvn spring-boot:run
でSpringBootを起動させます。
アクセス確認
http://EC2のIP:8080
にアクセスして、画面が表示されることを確認します。
まとめ
今回、無事にSpring BootアプリをAWS環境にデプロイすることができました。
しかし、Security Groupのポート設定忘れなど、基本的なミスもいくつかあり、環境構築の重要性を改めて実感しました。
今回はシンプルな構成でしたが、今後はELBの追加やマルチAZ構成など、より実践的な構成を学びながら取り入れていきたいと思います。