AWS を使用して Rails 6 + MySQL + Nginx という基本的なよくあるサーバーの構築方法をご紹介します。
1つの記事に書くには、長くなるので3部作でお送りいたします。
- ネットーワーク環境編
- データベース編 ← 今回はここ
- サーバー編
データベースサーバーは、Railsからのアクセスだけに制限してプライベートなものにするため
プライベートなサブネットにMySQLのデータベースサーバーを作成します。
データベースサーバーは、AWSのRDSを使用します。
プライベートなサブネットにデータベースを作成することで、同じVPC内からのみ通信できるようになり、セキュアなものにできます。
Step.1 プライベートなサブネットの作成
ネットワーク環境編で作成したサブネットと別で、もう2つサブネットの作成をします。
※2つ作成するのは、次の工程RDSのマルチ-AZによる仕様のためです。

各項目適当なもの入力


別のアベイラビリティーゾーンでもう1つ作成します。

作成したサブネットがプライベートになっているか確認してみます。
それと、ルートにインターネットゲートウェイがアタッチされていないことを確認しておきます。
アタッチされているとインターネットからの接続ができてしまうので、プライベートでは無くなってしまいます。逆に、アタッチしていないとインターネットからの接続ができないようになります。

されていないので、プライベートなサブネットであると確認がとれました。
※アタッチされているとこのようにインターネットゲートウェイがアタッチされていると表示されます。

Step2. データベース作成
データベースはAWSのRDSのMySQLを使用します。
※RDSはデータベースのCPU使用率・空きストレージなど可視化できる便利なサービスです。
RDSのダッシュボードからデータベースの作成していきます。

データベースの作成方法は標準作成、エンジンタイプはMySQLを選択します。

無料利用枠内で使用したいのでテンプレートは無料利用枠を選択しておきます。

データベースへの認証情報を設定します。
※認証情報は忘れないようにしてくださいね。

DBインスタンスサイズ・ストレージはデフォルトの設定のままでいきます。
データベースの接続設定をしていきます。

追加設定のログのエクスポートでログをCloudWatchで見れるよなりますので、チェックを入れおきましょう。

これで、データベースの作成をしましょう。
Step3. データベースのセキュリティ設定
今回作成したEC2インスタンスからの通信のみ通すような設定をしていきます。
先ほど、作成したセキュリティーグループのインバウンドルールを編集します。

EC2インスタンスのセキュリティーグループを選択することで、EC2インスタンスが許可した通信はデータベースサーバーへの通信もできるようにすることができます。
Step4. EC2からデータベースサーバーに接続
EC2インスタンスから、mysqlコマンドで接続できるか確認します。
まずは、mysqlをインストールしておきます。
$ sudo yum install -y mysql
以下のコマンドでデータベースに接続できます。
$ mysql -u root -p -h ’データベースのエンドポイント’
ユーザーとパスワードは、データベース作成したさいの認証情報になります。
エンドポイントは、RDSの概要から確認できます。

$ mysql -u root -p -h sample-rds.csrgnfmegbh3.ap-northeast-1.rds.amazonaws.com
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.20 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)]>
実行できればデータベース作成完了です。
お疲れ様でした。


コメント