EC2 + RDSを構築して、SpringBootとReactを載せてアプリを起動している【前編】

現在、絶賛バックエンドの学習をしているのですがアプリをデプロイする先をせっかくならAWSにやってみようということでAWS環境にEC2とRDSを構築してSpringBoot(バックエンド)とReact(フロントエンド)が起動するところまでなんとかできたのでまとめとして記事を書いていきます。

まだ知識が浅く間違っているところが多々あるかもしれないのですがご容赦ください。

前編での内容(今回の記事)
  • VPCの設定
  • EC2の設定
  • RDSの設定
  • EC2からRDSへの接続を確認する
後編での内容
  • Gitのダウンロード
  • Spring BootをEC2に配置する
  • ReactをEC2に配置する
  • RDSに初期データを作成する
  • アプリを起動して表示を確認する

後編はまだ執筆途中になります。公開できましたらまた共有致します。

スポンサーリンク

目次

VPCの設定

CIDRブロックは10.0.0.0/16の範囲に設定します。

サブネットの作成

VPCという大きなネットワークの中に小さなネットワークの集まりを作ることができ、またネットワークの範囲を限定することによってセキュリティを向上します。

外部接続用にパブリックサブネットを1つと、データベース用にプライベートサブネットを2つ用意します。

RDSを使用するときには、異なるAZに属するサブネットを2つ用意する必要があるようです。
このあたりなぜなのかは分かりませんので、もしご存じの方いたら教えてほしい、、、。

オカ

この辺のドキュメントが関係していそうなので理解できるようにしよう。

パブリックサブネット

プライベートサブネット

この2つサブネットは1aと1cで異なるAZを指定します。
CIDRブロックも別のものを指定するようにします。

インターネットゲートウェイの作成

VPC内のサーバーがインターネットと接続するためのゲートウェイを設定します。

インターネットゲートウェイとVPCに紐付けます。

ルートテーブルの作成

デフォルトでは、同じVPCのものしかアクセスができません。
なので、インターネットと接続の有無をここで設定します。

インターネットと接続したい場合には、ルートテーブルをインターネットゲートウェイに向かう設定を行い、「パブリックサブネット化」します。
反対にインターネットとは接続しない場合には、ルートテーブルをインターネットゲートウェイに向かう設定を行わずに、目的に合わせた設定を行います。

ルートテーブルを作成するのですが、今回どういうわけかすでに作られていた。VPCの作成したときとかに作られるのかな?

もしルートテーブルに作成されていなければ、自作で作成します。
作成したVPCにを紐付けます。

次にルートの編集をします。

次に、サブネットの関連付けを行います。

セキュリティグループの作成

VPC上に構築されるEC2などのインスタンスに対して仮想ファイアウォールとしての機能をもたらします。
基本的には、必ずインスタンスとセットで利用されます。

今回は、EC2とRDS用の設定を行います。

EC2用

RDS用

DBサブネットグループの作成

DB サブネットグループは、選択した VPC で DB インスタンスが使用できるサブネットと IP 範囲を定義します。

EC2の作成

無料のものを選択する。

インスタンスタイプはt2.microでとりあえずOKです。

キーペアは新しく作成して、.sshフォルダに格納します。

ネットワーク設定には、作成したVPC及びサブネットを紐付けます。

これでEC2の作成は完了になります。

RDSの作成

RDSを作成します。

MySQLを選択。

無料利用枠を選択

認証情報の登録

VPCやDBサブネットグループ、セキュリティグループの設定をします。

これでRDSの設定は完了です。

EC2にSSHで接続

EC2インスタンスのパブリックIPv4アドレスをコピーします。

$ sudo chmod 700 ~/.ssh/aws-okalog.pem #権限の変更
Password:  #自身のPCのパスワードを入力 

$ ssh ec2-user@35.74.233.111 -i ~/.ssh/aws-okalog.pem #EC2にSSHで接続

Last login: Tue Nov  8 04:39:24 2022 from pc18132.cac-net.ne.jp

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
13 package(s) needed for security, out of 16 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-10-0-0-94 ~]$ 

$はコピーしないでください。

設定が間違っていなければこれでログイン完了です。

EC2の中身。

[ec2-user@ip-10-0-0-94 ~]$ ls -la
合計 16
drwx------ 3 ec2-user ec2-user  95 11月  8 04:41 .
drwxr-xr-x 3 root     root      22 11月  8 04:34 ..
-rw------- 1 ec2-user ec2-user   6 11月  8 04:41 .bash_history
-rw-r--r-- 1 ec2-user ec2-user  18  7月 15  2020 .bash_logout
-rw-r--r-- 1 ec2-user ec2-user 193  7月 15  2020 .bash_profile
-rw-r--r-- 1 ec2-user ec2-user 231  7月 15  2020 .bashrc
drwx------ 2 ec2-user ec2-user  29 11月  8 04:34 .ssh

EC2からのログアウトはexitでいけます。

[ec2-user@ip-10-0-0-94 ~]$ exit
ログアウト
Connection to 35.74.233.111 closed.
$ 

EC2からRDSに接続

$ sudo yum update -y
.
. #もろもろアップデータされてます。
.
完了しました!
$ sudo yum install mysql -y #MySQLのインストール
.
. #インストールされてます。
.
完了しました!

コンソール画面に戻り、RDSのエンドポイントをコピーします。

[ec2-user@ip-10-0-0-94 ~]
$ mysql -h rds-okalog.cjbxdqb5nfbz.ap-northeast-1.rds.amazonaws.com -u admin -p
Enter password: #RDSのパスワードを入力

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 24
Server version: 8.0.28 Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 

これでEC2からRDSへの接続は完了しました。

後編では、EC2上にSpringBootとReactのアプリをデプロイして、URLからアプリにアクセスできるところまでやりたいと思います。

まとめ

Qiitaの記事がめちゃくちゃ分かりやすくほぼほぼ同じ内容になってしまっていますが、改めて自分で設定をすることで少し理解が深まりました。

自分の知識が深まったタイミングで、記事にも肉付けしていけたらと思います!

参考記事

https://qiita.com/Takao_/items/a55c85996dd6a8a8bb4c

https://aws.taf-jp.com/blog/57620

スポンサーリンク

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次