今回は、WEBサービスを作る上で欠かせない、Database を構築していきます。
AWSのDBにはいくつかの種類がありますが、
その中でも、世界で最も人気の高いオープンソースのリレーショナルデータベースである、
Amazon Relational Database Service(RDS)のMySQLを構築します。
DB構築後、DBが立ち上がっているかを確認する為に、
EC2インスタンスからDBに接続し、
データベース、テーブル、レコードを作成・アクセスしてみたいと思います。
やりたいこと
- RDS for MySQLの構築
- EC2インスタンスからMySQLへアクセス
AWS構成図
やることリスト
- VPC内に、Public Subnet、Private Subnet を構築
- Public Subnet 内に EC2インスタンス を構築
- Private Subnet 内に MySQL を構築
料金の確認
AWSサービスには、無料で使えるサービスもありますが、当然有料サービスもあります。
本章では、分かる範囲でAWSサービスの料金について書こうと思いますが、私の理解不足で漏れていることもあります。
各サービスを使う際は、料金がどのくらい掛かるかを理解した上で、自己責任で利用ください。
RDS
以下、色々記載していますが、
結論、AWSアカウント作成から12か月間は、無料枠の範囲で使えると思います。
以下は、RDS利用時のコストの掛かる項目と単価です。
コスト項目 | 単価 | 備考 |
インスタンス | 0.104 USD / 時間 | ・db.t3.medium ・支払いオプション(オンデマンド) ・マルチAZ配置なし |
RDBプロキシ | 0.018 USD / 時間 | |
データベースストレージ | 0.138 USD / GB 月 | ・汎用SSD (gp3) ボリューム ・マルチAZ配置なし |
バックアップストレージ | 0.095 USD / GB 月 | |
スナップショットのエクスポート | 0.012 USD / GB 月 | ・S3へエクスポートし、Athenaなどでのデータ解析 |
データ転送料(out) | 0.114 USD / GB 月 | ・合計 100 GB のインターネットへのデータ転送 (アウト) を毎月無料 |
※ 2023/7/28記載
MySQLの料金の詳細に関しては以下を参照下さい。
無料枠
AWSアカウント作成から12か月間無料枠
- 1 か月あたり 750 時間の、MySQL、MariaDB、PostgreSQL データベースを実行する Amazon RDS シングル AZ db.t2.micro、db.t3.micro、および db.t4g.micro インスタンスの使用時間 (該当する DB エンジン)
- 20 GB の汎用 (SSD) データベースストレージ
- 20 GB のデータベースバックアップおよび DB スナップショット用ストレージ
AWS の無料利用枠は、以下サイトを確認ください。
VPC構築
MySQLは、VPC上に構築する必要があります。
そこで、VPCを構築していない人は、以下記事を参照してVPCを構築してください。
EC2インスタンス構築
MySQLにアクセスする為に EC2インスタンス を構築する必要があります。
そこで、EC2インスタンス を構築していない人は、以下記事を参照して EC2インスタンス を構築してください。
MySQL構築
いよいよ MySQL を構築していきます。
AWSのコンソール画面にログインし、RDSサービスに遷移します。
設定~サブネットグループ~
サブネットグループとは、RDSデータベースインスタンスがプロビジョニングするサブネットをグループ化したものです。
RDSを構築するには必要なものなので、RDSを構築する前に作成する必要があります。
サブネットグループ > DB サブネットグループを作成 ボタンをクリックし、設定画面に遷移します。
サブネットグループの詳細
サブネットを追加
「作成」 ボタンを押すと、サブネットグループが出来ます。
設定~MySQL~
データベース > データベースの作成 ボタンをクリックし、設定画面に遷移します。
設定内容が多いので、画像を省けるものは省いていきます。
データベース作成方法を選択
「標準作成」を選択
オプション
「MySQL」を選択
テンプレート
「無料利用枠」を選択
設定
インスタンスの設定
インスタンスは、デフォルトの 「db.t3.micro」のまま。
ストレージ
接続
データベース認証
「パスワード認証」を選択
データベースの作成
「データベースの作成」ボタンを押して、数分待つとデータベースが出来上がります。
セキュリティグループの変更
DBに紐づけられた、「scg-waku-test-db」のソースが、PCのグローバルIPになっているので、
「scg-waku-test-web」に変えてあげましょう。
あと、セキュリティグループに、「ec2-rds-1」や「rds-ec2-1」が作成されていますが、
必要性を感じないので、不要なセキュリティグループは削除しておきましょう。
動作確認
先ずは、EC2インスタンスの中に入っていきましょう!
インスタンス > インスタンスID > 接続 > 「接続」ボタンを押すと、ブラウザにCLIが出てきます。
mysql パッケージのインストール
DBに入る為に、EC2インスタンスに mysql パッケージをインストールしましょう。
$ sudo yum install -y mysql
DBへログイン
$ mysql -h <DBのエンドポイント> -u waku -p
DBのエンドポイントは、以下に記載があります。
RDSサービス > データベース > DB 識別子 > エンドポイント
DB操作
$ create database sample;
$ use sample;
$ create table users(id int, name varchar(255));
$ insert into users values(1, "shishimaru");
$ select * from users;
はい、以下画面が表示されたら成功です!
MySQL [sample]> select * from users;
+------+------------+
| id | name |
+------+------------+
| 1 | shishimaru |
+------+------------+
1 row in set (0.00 sec)
データベースの停止/削除
無料枠内なら放置していても料金は発生しませんが、不要なら削除した方がいいですね。
RDSサービス > データベース > 任意「DB 識別子」の選択 > アクション > 一時的に停止 / 削除
最後に
如何でしたか?
座学で勉強するより更なる学びがあったのではないでしょうか。