#はじめに
AWSを使用してEC2とRDSを構築し、EC2のSSH接続とRDSへの接続確認まで行ってみました。その手順の流れを備忘録として残します。
※AWSコンソール画面のスククショは、2020年1月4日時点のものとなります。
#構成図
#前提条件
AWSアカウント及びIAMユーザーは作成済みであること。
Mac環境であること。(WindowsだとSSHの接続確認の操作が異なります)
##サブネットの作成
外部接続用のパブリックサブネットを1つとデータベース用のプライベートサブネット2つを作成します。
###1.パブリックサブネット
CIDRブロックの数値はこちらも例で挙げられている範囲とします。
EC2インスタンス作成時に自動的にパブリックIPアドレスが付与されるよう設定しておきます。

###2.プライベートサブネット(データベース用)
今回はシングルAZで構成します。ただし、RDSを利用するには、異るAZに属するサブネット2つを用意する必要があるので、DB用のサブネットを2つ作成し、この2つのサブネットは「1a」「1c」と異なったAZを指定します。
また、CIDRブロックの範囲は使用済みの数値は指定できないため範囲内の数値に変更します。(参考記事)

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



##ルートテーブルの作成
デフォルトでは同じVPC内のものしかアクセスできないため、ルート編集で設定したゲートウェイに紐づいているアクセスの通信を可能にします。





セキュリティグループの作成
通信の許可設定をEC2用(SSH/HTTP/すべてのICMPIPv4)とRDS用(MYSQL/Aurora)をそれぞれ設定します。ちなみに、EC2のIPv4はpingコマンドで接続状況を確認するためのものです。
###1.EC2用




###2.RDS用




作成したサブネットが3つありますが、パブリックサブネット(10.0.0.0/24)は削除し、残り2つのプライベートサブネットのみを残して作成します。
##RDSの作成

テスト用のため今回は無料利用枠のみ有効化にチェックを入れています。
作成したVPC、サブネットグループが紐づけられていることを確認し、アベイラビリティゾーンはap-northeast-1a
を選択します。
VPCのセキュリティグループは、RDS用に作成したセキュリティグループを紐付けます。
今回は初期MySQLデータベースは不要なのでデータベース名は空白にします。
##EC2の作成

テスト用なのでAMI及びインスタンスタイプは無料利用枠を選択しています。
ネットワーク及びサブネットには作成したVPC及びパブリックサブネットを紐付けます。パブリックIPの自動割り当てはサブネット作成時に設定しているので、自動的に有効になると思いますが、無効になっている場合は有効に変更します。
既存のセキュリティグループを選択し、EC2用に作成したセキュリティグループを選択します。
新しいキーペアを作成しダウンロードすればEC2インスタンスの作成は完了です。
##EC2へのSSH接続の確認
EC2インスタンスの状態がrunning
に変わったことを確認し、IPv4パブリックIPをコピーします。
次にターミナル画面に切り替えて、ping + IPアドレス
のコマンドを入力し、次の画面が表示されれば接続準備はOKです。接続を切るときはcontrol + c
を入力します。
$ ping 54.65.196.161
PING 54.65.196.161 (54.65.196.161): 56 data bytes
64 bytes from 54.65.196.161: icmp_seq=0 ttl=236 time=14.381 ms
64 bytes from 54.65.196.161: icmp_seq=1 ttl=236 time=15.311 ms
64 bytes from 54.65.196.161: icmp_seq=2 ttl=236 time=14.739 ms
64 bytes from 54.65.196.161: icmp_seq=3 ttl=236 time=13.951 ms
続いてSSHの接続確認を行います。先ほど作成したpemキーを.sshフォルダ
に移動させます。次のコマンドの手順で入力し、次の結果が表示されればEC2への接続が完了です。
$ mv Downloads/aws-test.pem .ssh/ #pemキーを.sshフォルダに移動
$ sudo chmod 600 ~/.ssh/aws-test.pem #指定している鍵の権限が広すぎるため変更
Password:〇〇〇〇〇〇〇〇 #自身のPCのパスワード
$ ssh -i ~/.ssh/aws-test.pem ec2-user@54.65.196.161 #pemキーとパブリックIPを使用
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
8 package(s) needed for security, out of 17 available
Run "sudo yum update" to apply all updates.
##EC2からRDSへの接続確認
$ sudo yum update -y #EC2接続時に最初に実行
:
:
完了しました!
$ sudo yum install mysql -y #MySQLのインストール
:
:
完了しました!
AWSのコンソール画面に戻り、作成したRDSのエンドポイントをコピーします。
$ mysql -h aws-test.cl0w7wsj1gla.ap-northeast-1.rds.amazonaws.com -u admin -p #RDSのエンドポイントとRDS作成時のマスターユーザ名(admin)を使用
Enter password:〇〇〇〇〇〇〇〇 #RDS作成時のパスワード
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.7.22-log 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)]> #exitで抜けます
ついでにデフォルトで入っているMariaDBを削除してMySQLのみに変更します。
$ sudo yum remove mariadb-libs -y #MariaDBの削除
:
:
完了しました!
$ sudo rm -rf /var/lib/mysql #一度MySQLも削除
$ sudo yum install mysql -y #再度MySQLのインストール
:
:
完了しました!
$ sudo yum install -y https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm
:
:
完了しました!
$ sudo yum install -y mysql-community-server
:
:
これらを試行できます: rpm -Va --nofiles --nodigest
$ sudo yum install -y mysql-devel
:
:
完了しました!
$ mysql -h aws-test.cl0w7wsj1gla.ap-northeast-1.rds.amazonaws.com -u admin -p
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 44
Server version: 5.7.22-log Source distribution
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
以上で、今回の構成図が完成となります。
##参考記事
https://yamagata.int21h.jp/tool/cidrcalc/
https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce
https://qiita.com/nave-m/items/68425f476b254a1a47b0