1
1

More than 3 years have passed since last update.

Springで作成したアプリをAWSのRDSとElastic Beanstalkを用いてデプロイする方法②

Last updated at Posted at 2021-09-04

はじめに

この記事は「Springで作成したアプリをAWSとRDSとElastic Beanstalkを用いてデプロイする方法①」
の続きです。
前回までは、RDSからDBを作成しました。
今回はMySQLの設定とElasticBeanstalkの設定について執筆していきます。

MySQLの設定

MySQLの設定は下記のような作業を行います。

事前にRDSのDBのエンドポイントをコピーしておく。

理由は後程、MySQLに接続する際に利用するためです。
スクリーンショット 2021-09-03 16.20.17.png

MySQLWorkbenchのインストール

公式サイトのダウンロードページよりインストールする。(2021年9月3日現在の最新バージョンは8.0.26)

MySQLの接続設定

インストール後、MySQLWorkbenchを開くと下記のような画面が表示される。
赤枠をクリックする。
スクリーンショット 2021-09-03 16.48.57.png

赤枠をクリック後、下記のような画面が表示される。
「NEW」をクリックする。
スクリーンショット 2021-09-03 16.55.04.png

下記の通り入力する。
Connection name:任意の名前
Hostname:RDSのDBのエンドポイントを入力
Username:RDSの作成時のユーザの名前
スクリーンショット 2021-09-03 16.25.35.png

password:RDS作成時のパスワードを入力する。
スクリーンショット 2021-09-03 16.47.55.png

必要事項入力後、「Test Connection」をクリックし、赤枠のような画面が表示されればRDSのDBとの接続が完了!
スクリーンショット 2021-09-03 16.22.50.png

MySQLへのデータの追加

MySQLのデータベース(Schema)の新規登録、テーブル作成、データの反映は下記の記事を参考に作成する。

Springの設定

Springの設定は下記のような作業を行います。

Javaファイルの作成

STS(もしくはEclipse)を開いてスタータプロジェクトの新規作成を行う。
スクリーンショット 2021-09-03 17.18.35.png

下記の通り入力し、完了ボタンをクリックする。
名前:任意の名前
タイプ:Maven
パッケージング:War
Javaバージョン:11(お使いのjavaのバージョンに合わせてください)
言語:Java

スクリーンショット 2021-08-30 9.54.25.png

赤枠の通りのものを選択する。
(JDBCやThymeleafを使う前提で進めてます。)
スクリーンショット 2021-08-30 9.58.47.png

数分後、ファイルが作成されます。
その後は下記のサイト等を参考にしてコントローラーやサービスを作成していきます。

Javaファイルの作成後

コントローラーやサービス作成後に、ローカルで動かすことができるようになった後に下記のような設定を行います。

application.propertiesにDB接続情報の記載

application.propertiesには下記のように追記する。

application.properties
spring.datasource.url=jdbc:mysql://"RDSのDBのエンドポイント":3306/"DBのスキーマ名"
spring.datasource.username="DB作成時のユーザ名"
spring.datasource.password="DB作成時のパスワード"
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

筆者は下記の通りになりました。
スクリーンショット 2021-09-04 10.57.53.png

pom.xmlの書き換え

下記内容を追記します。
packagingとtomcatについての内容です。
筆者の場合は元々記載があったため、確認のみしました。

pom.xml
//省略
<packaging>war</packaging>
//省略
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
//省略

"ファイル名"Application.javaの書き換え

筆者でいうと、下記のようなInquirySystemApplication.javaを書き換えます。

スクリーンショット 2021-09-04 11.12.24.png

SpringBootServletInitializerを継承させ、
SpringApplicationBuilderを追記します。

"ファイル名"Application.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class "ファイル名"Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources("ファイル名"Application.class);
    }

    public static void main(String[] args) {
        SpringApplication.run("ファイル名"Application.class, args);
    }

}

maven installを実行してwarファイルの作成

Maven installを実行します。
スクリーンショット 2021-09-03 20.06.06.png

数分後、コンソールに下記の表示が出た場合成功です。
スクリーンショット 2021-09-03 20.06.58.png

作成したwarファイルはtargetフォルダ配下に格納されます。
スクリーンショット 2021-09-03 20.07.21.png

ElasticBeanstalkの設定

AWSへログイン後、ElasticBeanstalkの画面へ遷移し。Create Applicationをクリックする。
スクリーンショット 2021-09-04 11.24.22.png

アプリケーション名には任意の名前を入力する。
タグは特に必要ないため、記載なしでも良い。
スクリーンショット 2021-09-04 11.29.24.png

プラットフォームはtomcatを指定します。
スクリーンショット 2021-09-04 11.29.36.png

ソースコード元はローカルファイルを選択します。
ファイルを選択をクリックして、taeget配下のwarファイルを選択します。
スクリーンショット 2021-09-04 11.29.50.png

ファイルのアップロードが完了後、環境の作成をクリックします。
スクリーンショット 2021-09-04 11.30.32.png

数分後、下記のようなページ遷移します。
赤枠で囲われたURLをクリックすると、アプリケーションを使うことができるようになります。
スクリーンショット 2021-09-04 11.35.17.png

終わりに

以上でSpringで作成したアプリをAWSとRDSとElasticBeanstalkを用いてデプロイする方法は完結です。

Springの設定について書かれた日本語記事があまりなかったため苦戦していましたが、英語の記事(公式ドキュメント等)を読むことや英語版のUdemyを受講してようやくデプロイができました。そのため、これからエラーが出ても英語だからと言って逃げずに読むようにしたいです。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1