こちらの記事の続きです。
今回はバックエンド環境のセキュリティグループの設定および、
EC2、RDSそれぞれの実行環境を構築します。
構成(フロントエンド含む)
EC2
Webアプリのバックエンドを実行します。
今回はJavaのjarファイルを常時実行し、フロント側から実行されたAPIを処理します。
RDSに構築されたデータベースとデータをやりとりします。
今回はSpringBootで実装しています。
なお、HTTPS接続したいために、SSLを有効にしています。
その際、今回はテスト環境のため自己署名証明書を使っています。
RDS
Webアプリのデータベースを担います。
今回はPostgreSQLです。
S3
Webアプリのフロントエンドを配置します。
静的ウェブサイトとして設定し、エンドポイントにアクセスすることでフロント側の画面を表示します。
今回はVue.jsを用いて画面を作成します。
セキュリティグループの設定
EC2
AWSコンソール画面より、EC2 > インスタンス と進み、インスタンスを選択し、
セキュリティタブよりセキュリティグループを選択します。
セキュリティグループの設定画面に移行するので、インバウンドを設定します。
今回はHTTPS接続で8443ポートを使うので、8443ポートをインバウンドルールに追加しました。
RDS
AWSコンソール画面より、RDS > データベース と進み、接続とセキュリティタブよりVPCセキュリティグループを選択します。
セキュリティグループの設定画面に移行するので、インバウンドを設定します。
タイプはPostgreSQLを選択しました。自動でTCP、ポート5432が選択されます。
EC2からのみ接続可能とするため、ソースにはEC2のプライベートIPアドレスを設定しました。
実行環境構築
EC2
※ jarファイルは作成済みであることが前提です
※ データベースの接続先をRDSのエンドポイント向けにしておきます
Javaを実行するために、EC2にJavaをインストールします。
インストール可能なJava一覧を表示します。
yum search java
Javaをインストールします。(少々古いですが、下記はJava8です)
sudo yum install -y java-1.8.0-openjdk.x86_64
以下でインストールを確認します。
java -version
SCPコマンドにてjarをアップロードします。(ローカル環境にて実行)
SSLの場合は証明書も配置します。
scp -i [pemファイル] [対象のjarファイル] ec2-user@[EC2のIP]:~
アップロードしたjarファイルを実行します。
SSH接続が切れても実行したいため、バックグラウンドで実行します。
nohup java -jar [jarファイル] &
バックグラウンドで実行されているモジュールの確認は以下で行います。
ps x
停止する場合は、以下でkillします。
kill [PID番号]
RDS
RDS上にデータベースを構築します。
EC2からRDSのpostgreSQLに接続するために、EC2にpsqlをインストールします。
EC2上で以下コマンドを実行し、インストール可能なモジュール一覧を表示します。
yum list | grep postgre
psqlをインストールします。
sudo yum install postgresql.x86_64
インストール確認をします。
psql --version
postgreSQLに接続します。
psql --host=[RDSエンドポイント] --port=5432(postgreSQLのポート) --username=[ユーザ名] --password --dbname=[データベース名]
接続されたら、SQLを実行し任意のデータベースを構築します。
db=> create table ... などなど
上記でバックエンド環境が構築できました。
EC2のインバウンドで許可されたIPから、EC2のエンドポイントに向けAPIを実行することができます。