AWSを始める 〜 7.プライベートサブネットにDBサーバ用のインスタンスを構築する

◎これまでの学習

AWSを始める 〜 1.仮想サーバの立ち上げ
AWSを始める 〜 2.SSHを使用した仮想サーバへの接続
AWSを始める 〜 3.仮想ネットワークの作成
AWSを始める 〜 4.設定したVPCにインスタンスを作成する
AWSを始める 〜 5.新しく作成したインスタンスにSSHで接続する(※プライベートキーを無くした)
AWSを始める 〜 6.ミドルウェアのインストール 〜 Apache Web サーバ

◎今回の内容

1.プライベートサブネットの構築
2.DBサーバ用のインスタンスを構築

1.プライベートサブネットの構築
今回の対象は次図の色付けした部分。

そういいつつ、実はプライベートサブネットは既に構築済みである(「AWSを始める 〜 3.仮想ネットワークの作成」)。
少しだけ復習しておく。
パブリックサブネットとプライベートサブネットの違いは何かと言うと、ルートテーブルの設定の違い。
パブリックサブネットの場合だと、destination「0.0.0.0/0」に対するターゲットをインターネットゲートウェイにしているが、プライベートサブネットの場合はそれがない。つまり自身のネットワークに対するルーティングの設定を行うということだ。
それでは、プライベートサブネットにDBマシン用のインスタンスを作成する。

2.DBサーバ用のインスタンスを構築
EC2→Launch Instanceから「AMI」を選択する(「AWSを始める 〜 4.設定したVPCにインスタンスを作成する」と同じ)。
Subnetには、作成したプライベートサブネットを指定する。インターネットからアクセスさせないため「Auto-assign Public IP」はDisableに設定する。

これ以降は、「AWSを始める 〜 4.設定したVPCにインスタンスを作成する」と同じ。
EC2の管理画面から起動を確認する。たしかにPublic IPはふられていない。

次に、パブリックサブネットに構築したWEBサーバ用インスタンスから、DBサーバインスタンスへの疎通確認を行う。
セキュリティグループでICMPを許可してから、pingをうつと、疎通できた。

[ec2-user@ip-172-31-1-20 ~]$ ping 172.31.2.171
PING 172.31.2.171 (172.31.2.171) 56(84) bytes of data.
64 bytes from 172.31.2.171: icmp_seq=1 ttl=64 time=0.455 ms
64 bytes from 172.31.2.171: icmp_seq=2 ttl=64 time=0.488 ms
64 bytes from 172.31.2.171: icmp_seq=3 ttl=64 time=0.512 ms

次に、WEBサーバからDBサーバへSSHで接続するために、プライベートキーをWEBサーバにコピーする。
TeratermでWEBサーバにログインして、Teratermのメニューから「SSH SCP」を選択する。

秘密鍵ファイルのパーミッションを自分しか読めないように変更する。

[ec2-user@ip-172-31-1-20 ~]$ ls -l
total 4
-rw-r--r-- 1 ec2-user ec2-user 1692 Sep 26 04:57 my-db-key.pem
[ec2-user@ip-172-31-1-20 ~]$ chmod 400 my-db-key.pem
[ec2-user@ip-172-31-1-20 ~]$ ls -l
total 4
-r-------- 1 ec2-user ec2-user 1692 Sep 26 04:57 my-db-key.pem

WEBサーバからsshを使用してDBサーバにログインする。

[ec2-user@ip-172-31-1-20 ~]$ ssh -i my-db-key.pem ec2-user@172.31.2.171

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

https://aws.amazon.com/amazon-linux-ami/2014.09-release-notes/
[ec2-user@ip-172-31-2-171 ~]$ hostname
ip-172-31-2-171

これで完了。