『AWSハンズオン』EC2インスタンスからRDSインスタンスに接続してみる編

#初めに
この記事はAWS初学者が書いているAWS初学者の方や未経験の方向けの記事になります。
内容や説明が間違っていた場合はコメントいただけるとありがたいです。
###投稿者のレベル
AWS CLF持ってるレベル
AWS実務経験無し
AWS使用経験(個人用+会社作成アカウント使用)：約2ヶ月
ちょっと触ったことがあるサービス：IAM、EC2、EIP、VPC、RDS、CloudWatch(もしかしたら他にも使ったような気がする．．．)
最近本格的にAWSの勉強を始めたインフラエンジニアです。
###前提知識＆条件
[『AWSハンズオン』VPCとEC2を使ってWebサーバの構築編](https://qiita.com/Mattun_0226/items/13b995481838a9b0efe0)
こちらの記事を事前に読んでいただけると今回行うハンズオンがスムーズに進みます。
またEC2インスタンスをSSHできる状態を作成します。
#今回の目的
EC2でデータベースサーバを構築することも可能ですが、RDSを使用することでバックアップやデータベースのスケーリングをAWSに任せることができるのでWebアプリケーションの最適化に集中できるようになります。
今回の目的はRDSの基本的な使用方法を学ぶことを目的としています。
#使用するサービス
###・RDS
　AWSの提供するリレーショナルデータベースサービスです。
　MySQLやOracleといった人気のデータベースを使用することが可能です。
###・VPC
　Virtual Private Cloud の略です。
　VPCはAWS内にプライベートなネットワーク環境を作成することが出来ます。
　アカウント作成後はデフォルトのVPCが作成されています。
###・EC2
　Elastic Compute Cloud の略です。
　AWS上に仮想サーバを構築するサービスです。
　仮想サーバの事をEC2インスタンスと言います。
　慣れている人なら数分で仮想サーバを作成することが可能です。
#事前準備
###1. VPCの作成
VPCを作成します。
作成方法は過去に書いたこちらの記事をお読みください。
[『AWSハンズオン』VPCとEC2を使ってWebサーバの構築編](https://qiita.com/Mattun_0226/items/13b995481838a9b0efe0)
###2. インターネットゲートウェイの作成
インターネットゲートウェイの作成をします。
作成方法は過去に書いたこちらの記事をお読みください。
[『AWSハンズオン』VPCとEC2を使ってWebサーバの構築編](https://qiita.com/Mattun_0226/items/13b995481838a9b0efe0)
###3. サブネットの作成
RDSはインターネットから接続されたくないのでプライベートサブネットに所属させます。
RDSは作成する際にアベイラビリティーゾーンを二つ指定する必要があります。
なのでサブネットを2つ作成し、その2つがそれぞれ違うアベイラビリティーゾーンに所属している状態を作成します。
またEC2インスタンスからRDSに接続するためにインターネットに接続できるパブリックサブネットを1つ作成します。
サブネットの作成は前回同様の作り方になります。
作成方法は過去に書いたこちらの記事をお読みください。
[『AWSハンズオン』VPCとEC2を使ってWebサーバの構築編](https://qiita.com/Mattun_0226/items/13b995481838a9b0efe0)
###4. ルートテーブルの作成
　今回作成するルートテーブルは2つで、一つがインターネットゲートウェイ宛のルートが書いてあるパブリックサブネット用、もう一つがRDS用のインターネットに接続しないプライベートサブネットに関連付けるものです。
作成方法は過去に書いたこちらの記事をお読みください。
[『AWSハンズオン』VPCとEC2を使ってWebサーバの構築編](https://qiita.com/Mattun_0226/items/13b995481838a9b0efe0)
#設定の流れ(今回の本編)
###1. RDS用セキュリティグループの作成
AWSマネジメントコンソールの左上にある「サービス」をクリックして「EC2」を検索して開きます。
開いたら左側の欄にある「セキュリティグループ」をクリックします。(少し下の方にスクロールしてください。)
クリックすると以下のページが表示されます。
表示されたら「セキュリティグループを作成」をクリックしてください。
![sg.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/0af098ec-349c-a7f4-67b9-60f1741313b5.jpeg)
クリックすると以下のページが表示されます。
表示されたら「セキュリティグループ名」「説明」「VPC」を入力していきます。
「セキュリティグループ名」は任意の名前で大丈夫です。自分はAWS_DB_sgにしました。
「説明」も任意で大丈夫です。
「VPC」は作成したVPCを選択してください。
これらの入力が完了したら下にスクロールします。
![sg5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/15d8f0d1-9371-4bf3-6a94-e954ca492c95.jpeg)
下にスクロールすると「インバウンドのルール」があり、「ルールの追加」をクリックします。
クリックするとルールの追加ができるようになるので追加していきます。
「タイプ」には「MYSQL/Aurora」を選択します。
「ソース」には接続したいEC2インスタンスのIPアドレスかセキュリティグループで指定します。
追加が完了したら下にスクロールして「セキュリティグループを作成」をクリックします。
![WS000002.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/85c1ccca-f247-b78d-9fdd-8fc8a4b31638.jpeg)
クリックしたらセキュリティグループ一覧のページに戻って作成されていることを確認してください。
###2. RDSの設定
確認ができたら左上の「サービス」から「RDS」を検索して開きます。
開くと以下のページが表示されると思います。
表示されたら左側の欄から「サブネットグループ」をクリックします。
![WS000003.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/3ba67cd2-ebd5-1069-cecf-0be539ef20d7.jpeg)
クリックすると以下の画面が表示されると思います。
表示されたら「DBサブネットグループを作成」をクリックします。
![WS000004.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/4dcee16b-e2aa-c1c0-3af9-7e4ac3f56dff.jpeg)
クリックすると以下のページが表示されると思います。
表示されたら「名前」「説明」「VPC」を入力します。
「名前」は任意のもので大丈夫です。自分はAWS_DB_subnetGにしました。
「説明」も任意のもので大丈夫です。
「VPC」は作成したものを選択してください。
入力が完了したら下にスクロールします。
![WS000005.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/7c0813cd-355e-51f7-bab3-975347cb766d.jpeg)
下にスクロールすると「サブネットを追加」という項目があるので追加します。
「アベイラビリティーゾーン」はプライベートサブネットの所属しているものを二つ選択します。
「サブネット」は作成したプライベートサブネットを選択します。
選択すると以下のようになると思います。
このようになったら下にスクロールして「作成」をクリックします。
![sgg.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/0308765e-eccf-7924-d351-a82df4082f07.jpeg)
クリックすると以下の画面のようになります。
サブネットグループが作成されていることを確認します。
![sgg2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/fe48da58-0569-8d86-08c4-8b7846f37486.jpeg)
確認が出来たら左側の欄にある「データベース」をクリックします。
クリックすると以下のページが表示されます。
表示されたら「データベースの作成」をクリックします。
![WS000010.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/4d3817db-8d6a-b04f-4563-6999c5fdda06.jpeg)
クリックすると以下のページが表示されます。
「データベースの作成方法を選択」「エンジンのオプション」「テンプレート」「設定」「DBインスタンスサイズ」「接続」「追加設定」を変更していきます。
「データベースの作成方法を選択」は「標準作成」を選択します。
「エンジンのオプション」は「MySQL」を選択します。「バージョン」は最新のものを選択します。
「テンプレート」は「無料利用枠」を選択します。
「設定」の「DBインスタンス識別子」は任意の物を入力してください。自分はAWS-DB-MySQLにしました。
「マスターユーザー名」はadminのままです。
「マスターパスワード」任意の物を入力してください。
「DBインスタンスサイズ」は「バースト可能クラス(tクラスを含む)」を選択します。
「ストレージ」は変更無しです。
「接続」の「VPC」は作成したVPCを選択してください。
「サブネットグループ」は上記で作成したものを選択します。
「パブリックアクセス可能」は「なし」を選択します。
「既存のVPCセキュリティグループ」は上記で作成したものを選択します。
「アベイラビリティーゾーン」はおそらく二つ選べるようになっていると思いますのでどちらかを選択します。
「データベースポート」はそのままで大丈夫です。
ここまでの作業が完了したら下にスクロールして「データベースの作成」をクリックします。
![WS000011.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/3ff1ac42-6630-4ae1-494d-46f033defcef.jpeg)
クリックすると以下のページが表示されます。
表示されたら作成されていることを確認してください。
(作成には少し時間がかかります。)
![WS000012.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/fc66bff0-b764-71af-903b-c0988baf3d33.jpeg)
###3. EC2インスタンスからRDSに接続
まずEC2インスタンスにSSHで接続します。
接続方法は過去に書いたこちらの記事をお読みください。
[『AWSハンズオン』VPCとEC2を使ってWebサーバの構築編](https://qiita.com/Mattun_0226/items/13b995481838a9b0efe0)
接続ができたらEC2インスタンスにMySQLをインストールします。
以下のコマンドを実行してください。

```text:EC2インスタンス上
sudo yum update -y ///このコマンドでパッケージを最新版のものにしています。
sudo yum install mysql -y
```
上記コマンドを実行したらRDSに接続するために必要な情報を確認しに行きます。
先程のデータベース一覧ページを表示して、データベースの「DB識別子」をクリックします。
クリックすると以下のページが表示されると思います。
表示されたら下にスクロールして「エンドポイント」のところに表示されてるものをコピーします。
![WS000013.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/571531b1-e40f-5a3f-5a14-889be73ba65d.jpeg)
コピーができたらEC2インスタンス上で以下のコマンドを実行してください。

```text:EC2インスタンス上
mysql -h コピーしてきたエンドポイント -P 3306 -u admin -p
```
上記のコマンドを打ち込んだらエンターを押します。
そうするとパスワードが求められるので、RDS作成時に設定したマスターパスワードを入力してください。
(-u の後のadminはRDSの作成の際に指定したマスターユーザーです。)
接続が成功すると以下の画面が表示されます。
![WS000014.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612471/5e5502b4-52b7-c361-8be6-855dfb5f6b28.jpeg)
以上でEC2インスタンスからRDSインスタンスに接続することが成功しました。
###4. 片付け
RDSインスタンスやEC2インスタンスは動かしていると料金が発生するので使用後は停止しておきます。
データベース一覧のページを開いて「アクション」をクリックして「停止」をクリック、「今すぐ停止」をクリックすると停止します。

EC2インスタンスの一覧ページを開いて「アクション」をクリック、「停止」をクリックすると停止します。
#感想
今回の記事はいかがだったでしょうか？
この記事を読んでRDSの基本的な使いかたの参考になっていると幸いです。
今回ハンズオン記事を書きましたが実務で一度もAWSを使用したことが無いので、「実務ではこんな使いかたします！」みたいなコメントを頂けるとありがたいです。