【AWS】EC2を踏み台にして、RDS接続

SSHでEC2に接続し、EC2を踏み台サーバーとしてRDSに接続する時の手順例です。

接続イメージ

SSHでEC2に接続し、EC2を踏み台サーバーとしてRDSに接続します。

全体イメージ
全体イメージ

VPC→サブネット→EC2→RDBの順で作成します。

前提

以下の作業はrootユーザではなくIAMユーザで行う

VPC

まず、EC2とRDBを仮想ネットワーク内に定義するので、その仮想ネットワークVPSを設定します。

VPSダッシュボード
VPSダッシュボード

VPS設定例
VPS設定例

VPCVPCの作成をします VPC名(なんでもおk)と仮想ネットワークのIP(ここでは10.0.0.0/16)を指定します

VPC名(例) 仮想ネットワークのIP
test-ec2-rdb-vpc 10.0.0.0/16

サブネット

EC2は外部ネットワークからアクセスできるようにし、RDBVPC内のアクセスのみ許可する。ようなネットワークを構築します。publicネットワークとprivateネットワークを作成します

サブネットダッシュボード
サブネットダッシュボード

サブネット設定例
サブネット設定例

サブネット→サブネットの作成で以下の3つを1つずつ作成します

サブネット名(なんでもおk) VPC アベイラビリティーゾーン 使用用途
subnet-public-1a 作成したVPC ap-northeast-1a WEBサーバ(EC2)用の外部ネットワークから繋ぐネットワーク
subnet-private-1a 作成したVPC ap-northeast-1a RDB用の内部ネットワーク
subnet-private-1c 作成したVPC ap-northeast-1c 直接は未使用だが、RDB作成時に必要

EC2

ネットワークを作成できたら、次は踏み台にするインスタンス(EC2)を作成します

インスタンス作成
インスタンス作成
踏み台にするWEBサーバインスタンスを作成します。
EC2→インスタンスの作成最初の画面でVPSとサブネットを指定します

VPC サブネット
作成したVPC subnet-public-1a(パブリック用サブネット)

セキュリティーグループ設定

セキュリティーグループ設定例
セキュリティーグループ設定例
この例ではSSHは全てのアドレスを許可していますが、絶対に本番環境では行ってはいけません

インスタンス作成途中にセキュリティーグループの作成があります。
ここでSSHを繋ぐ時の許可するIPを指定します

タイプ ソース
SSH 自分や会社のIP

SSHで接続

インスタンス作成時にキーを取得します。この時.pemがインスタンス接続時のキーとなるため必ず取得します。

ターミナルからダウンロードしたフォルダに行き、SSHに接続 $ssh -i xxxxxxx.pem ec2-user@yyy.yyy.yyy.yyy

これだけだと権限が大きすぎるエラーとなる

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'test-aws-ec2.pem' are too open.
Load key "test-aws-ec2.pem": bad permissions
ec2-user@3.112.251.187: Permission denied (publickey).

400に変えてあげることで、突破できます。(読込のみとする)
$chmod 400 xxxxxxxx.pem

RDB

RDBの作成を行いますが、すぐには作成できなく、下準備が必要です
DB サブネットグループ→パラメータグループ→RDBの作成
の順で作成します。

DB サブネットグループ

サブネットグループ
サブネットグループ

RDBサブネット作成
RDBサブネット作成

RDB作成の準備としてサブネット作成です。
RDBダッシュボード→サブネットグループ→サブネットグループの作成で以下を設定します

VPS アベイラビリティーゾーン サブネット
作成したVPS (東京の場合2つ) プライベート用サブネット2つ

RDBパラメータグループ

次にRDBパラメータグループです
RDBダッシュボード→パラメータグループ→サブネットグループの作成で以下を設定です。

パラメータグループファミリー
作成するDBとバージョン(例:mysql 5系)

EC2でVPC セキュリティグループ

ここでRDB向けのセキュリティーグループを新規で作成します EC2→セキュリティグループです

タイプ ポート 送信元
MySQL/Aurora(3306) 3306 10.0.0.0/16

RDB作成

ここまででようやくRDB作成できます

RDBダッシュボード→データベース→データベース作成
色々設定項目がありますが、以下を設定すればひとまずおkです。

DB クラスター識別子 マスターユーザー情報 Virtual Private Cloud (VPC) サブネットグループ VPC セキュリティグループ
DB名(なんでも) ユーザ名、パスワード 作成したVPC 作成したサブネット 作成したRDB用のセキュリティグループ

SSH確認

ここまで設定することでRDBに接続できます

EC2接続

SSHからEC2接続します $ssh -i xxxxxxx.pem ec2-user@yyy.yyy.yyy.yyy

Last login: Sat Dec 28 11:52:33 2019 from 103.5.142.234

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

https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/

MySQLインストール

EC2にMySQLをインストールします
$ sudo yum update
$ sudo yum install mysql

接続

RDBに接続します ホスト名はAWSRDB情報のエンドポイントです
$ mysql -h xxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u yourName -p
パスワード入力します

mysql>が出たら接続できました。お疲れ様でした。

[ec2-user@test-etc-rdb-web-1 ~]$ mysql -h hogehoge.ap-northeast-1.rds.amazonaws.com -P 3306 -u admin -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 268
Server version: 5.7.22-log Source distribution

Copyright (c) 2000, 2018, 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> 

参考元

photo-tea.com