インターネットから直接Amazon RDS in VPCにアクセスできない時の解決方法

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

社内のデータベース管理アプリから直接アクセスしたい

システム開発時やデータベースのメンテナンス時に、ローカルPCに入っている各種管理アプリを使って直接データベースにアクセスしたいことがあります。そんなときにどうやってアクセスするのかちょっとハマったので備忘録として残したいと思います。

EC2-VPC

長らくAWSの代表的なサービスであったEC2がデフォルトでしたが、今週のAWSの発表によって、仮想ネットワーク上にサーバを立てるVPCがデフォルト指定となりました。これに伴いまして、社内では実際に動作を確認してみました。

Amazon RDSはインターネットから見えるのか?

Amazon RDSはインターネットから見えるのか?これをまずはしっかり確認したいと思います。ちなみに、昔からあるEC2はEC2-Classicとなり、新しいのはEC2-VPCとなりました。

  • EC2-ClassicタイプのRDS:DNS名からパブリックなグローバルIPが返ってくる。アクセスOK
  • EC2-VPCタイプのRDS:DNS名からプライベートなローカルIPが返ってくる。アクセスNG
  • EC2-VPCタイプのRDS(New):VPCの設定で名前解決とホスト名が有効になっていれば、DNS名からパブリックなグローバルIPが返ってくる。アクセスOK

Amazon VPCの設定手順

既にアカウントをお持ちの方で、VPCを作成済みの場合、VPCの詳細を見てみてください。見慣れないキーワードとチェックボックスが並んでいます。

new-vpc-000

初期状態では片方しかチェックされていません。これを両方ともチェックONにしましょう。

new-vpc-001

RouteTableのInternet GatewayとSecurityGroup

EC2-VPC内のRDSインスタンスに直接アクセスするためには、以下の2つを行って下さい。

  • ルーティングテーブルをインターネット接続許可とする。
  • DBサブネットグループを作成してルーティングに参加させる。
  • セキュリティグループを作成してインターネットからアクセスできるようにポートを開ける。

Amazon RDSでデータベースを起動する

RDSで新しいインスタンスを起動します。情報を順番に入力して進めると、Publicly Accessibleの項目が出てきます。これをYESにしてください。起動済みのRDSインスタンスはNOになっているはずです。

new-vpc-002

接続確認

無事にインスタンス起動してくれれば後はアクセスしてみるだけです。まずは、デフォルト状態でインターネット接続を許可していないサーバをnslookupしてみましょう。

$ nslookup
> mydb1.azjhhogeqtzieo.ap-northeast-1.rds.amazonaws.com
Server:		192.168.0.3
Address:	192.168.0.3#53

Non-authoritative answer:
Name:	mydb1.azjhhogeqtzieo.ap-northeast-1.rds.amazonaws.com
Address: 10.0.3.23

確かにローカルのIPが返ってきました。続いて、ホスト名と名前解決をONにしてPublicly AccessibleをYESにしてSecurityGroupでポートを開けたインスタンスを試してみます。

$ nslookup
> mydb2.azjhhogeqtzieo.ap-northeast-1.rds.amazonaws.com
Server:		192.168.0.3
Address:	192.168.0.3#53

Non-authoritative answer:
mydb2.azjhhogeqtzieo.ap-northeast-1.rds.amazonaws.com	
canonical name = ec2-54-249-85-XXX.ap-northeast-1.compute.amazonaws.com.
Name:	ec2-54-249-85-XXX.ap-northeast-1.compute.amazonaws.com
Address: 54.249.85.XXX

お、EC2のパブリックなホスト名とグローバルなIPアドレスが返ってきました!!

まとめ

いちおう、RDSインスタンスに直接アクセスできることが分かりましたので、データベースのメンテナンスしやすくなりますね。ただし、ぱっと見た感じでPublicly Accessibleの設定を変更できないようですので、ルーティングテーブルやセキュリティグループでしっかりガートしてください。せっかくのVPCのセキュアな環境が台無しになってしまいます。私のオススメは踏み台サーバからのプロキシなのですが、無駄なインスタンスを起動してしまいますので、こんなやり方もあるよーってことで抑えておいてもらえればなと思います。