[[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 }}