[[AWSメモ]] > AWS EC2上で Spring Bootアプリ起動
* AWS EC2上で Spring Bootアプリ起動 [#n2142ac2]
#setlinebreak(on);

ここでは [[Spring BootでWebAPI作成]] で作成した Spring Boot アプリをEC2上で動作させる手順を記載する。
ポイントはセキュリティグループの設定で、これを間違うと接続できない。
&br;

#contents
-- 関連
--- [[Spring BootでWebAPI作成]]

** AWS EC2インスタンスの作成 [#b6fc272e]
[[マネージメントコンソール(EC2):https://ap-northeast-1.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-1]] から EC2インスタンスを作成する

ここでは、以下の通り作成した。

|項目|値|h
|インスタンス|Amazon Linux AMI|
|タイプ|t2.micro|
|セキュリティグループ|8080ポートを受け付けるセキュリティグループを選択する事&br;まだない場合は [[EC2 のメニュー:https://ap-northeast-1.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-1#SecurityGroups:sort=groupId]] から作る(「ルールの追加」から「カスタム TCP ルール」選択し、ポート:8080を入力)|
※途中で作成したキーペアは、接続時に使用するので確実に保存しておく事。

** AWS Aurora MySQLインスタンスの作成 [#s83ea768]
[[マネージメントコンソール(RDS):https://ap-northeast-1.console.aws.amazon.com/rds/home?region=ap-northeast-1]] から Aurora MySQL インスタンスを作成する

ここでは、以下の通り作成した。
|項目|値|h
|エンジン|Aurora|
|DBインスタンス識別子|testdbinstance|
|マスターユーザ|xxxxx|
|パスワード|********|
|VPC|デフォルト|
|サブネット|default|
|データベースの名前|testdb|
|ポート|3306|
|セキュリティグループ|イン/アウトバウンドで 同一LAN内の 3306 ポートが許可されているものを選択。(なければ作る)&br;*VPCのセキュリティグループから作成/変更可能&br;たぶんデフォルトのセキュリティグループでOK|
|パブリックアプセス|不可|


** EC2インスタンスへの接続確認 [#kfa17fc0]

*** 作成/起動した [[EC2インスタンスの一覧:https://ap-northeast-1.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-1#Instances:sort=instanceId]] から、パブリックDNS を確認する。 [#zb3eb2a1]

*** キーペアを使用してEC2インスタンスにSSH接続する [#hd3c707a]
#myterm2(){{
ssh -i ~/Desktop/pem/キーペア.pem ec2-user@パブリックDNS
}}

** RDSの接続確認とテスト用DB/ユーザの作成 [#n1309b1c]

*** EC2インスタンスにMySQLクライアントをインストールする [#sb5f3df4]
#myterm2(){{
sudo yum install -y mysql
}}

*** [[RDSインスタンス一覧:https://ap-northeast-1.console.aws.amazon.com/rds/home?region=ap-northeast-1#dbinstances:]] から対象のRDSを選択して、クラスターエンドポイントを確認する。 [#k4c3d9c2]

*** EC2インスタンスにSSH接続した状態で、RDS(Autora MySQL)に接続する。 [#ae493567]
#myterm2(){{
mysql -h 確認したエンドポイント -P ポート -u マスターユーザID -p
}}

*** テスト用のDB/ユーザを作成する [#z37bcc66]
[[Spring BootでWebAPI作成 - テスト用DBの準備>Spring BootでWebAPI作成#ied5d235]]を参照。

** Spring Boot アプリの作成とEC2へのデプロイ [#fd492b98]
[[Spring BootでWebAPI作成]]  を参照して作成したアプリの jar をEC2にデプロイする。
※ jar は プロジェクト直下の build/libs 配下に出来る。

#myterm2(){{
sftp -i ~/Desktop/pem/キーペア.pem ec2-user@パブリックDNS
sftp> put demo-0.0.1-SNAPSHOT.jar
}}

** DB接続先の変更 [#rc340685]
[[Spring BootでWebAPI作成]] で作成したアプリそのままだと、localhost のDBにしか接続できないので、
環境変数を設定して VPC内の Aurora MySQL に接続できるようにする。

#myterm2(){{
# 環境変数を追加
vim ~/.bach_profile
export SPRING_DATASOURCE_URL=jdbc:mysql://ホスト名:3306/example_db
export SPRING_DATASOURCE_USERNAME=example_user
export SPRING_DATASOURCE_PASSWORD=example_pass
export SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.jdbc.Driver
export SPRING_DATASOURCE_TOMCAT_MAX_ACTIVE=30
export SPRING_DATASOURCE_TOMCAT_MAX_IDLE=20
export SPRING_DATASOURCE_TOMCAT_MIN_IDLE=10
export SPRING_DATASOURCE_TOMCAT_INITIAL_SIZE=5

# 反映
source ~/.bash_profile
}}

** Spring Boot アプリの起動 [#t39e4426]
#myterm2(){{
java -jar /home/ec2-user/demo-0.0.1-SNAPSHOT.jar
}}


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS