亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

AWSのEC2 → RDS接続がVPC環境でハマったメモ

最近、今更ながらAWSを触っています。んで、まず初心者用にと始めたのが、おなじみドットインストール。

とても面白かったです。ていうか手軽すぎて鼻血が出そう。。。こっからさき、Chefとか色々勉強せねば、という感じですが。

んでまぁ、見事にハマったんですが、違う意味でも嵌ったわけです。

どうやら今年の春からVPCが標準になったらしい。

今年の春に、割と大きな動きがAWSにあったんですね。VPC(Virtual Private Cloud)環境が、EC2・RDSともにデフォルトになりました。 VPCは仮想的なプライベート空間をAWS内に構築する、みたいな理解なのですが、まぁそれはおいておいて。

つまり、僕くらいのんびりして今くらいに会員登録して、それからインスタンスを作り始める、とかをすると、EC2もRDSも勝手にVPCの中に作られてしまう設定になっている、ということなのです。

EC2 → RDSへの接続がなんかこける

それでこけたのが、こちらのレッスン。

これの設定の中で、"DB Security Group"を設定する、とあります。具体的にはEC2向けのポートを開けるのですが。

私の環境ではこれが全く表示されず、代わりにVPCのセキュリティをいじれ、と言われてしまいます。ほえほえ。。。 そいで、ここををいじらずに接続すると・・・まぁ当然エラーですよね。

VPCのセキュリティ設定に全て移っているわけ、です。

これはつまり、VPCのセキュリティを使って、EC2向けにDBポートを開ける、という処理を作らないといけませぬ。 それはつまり??というと、VPC SecurityGroupのInBoundを設定すればいいわけです。

InBoundというのはうち向けのアクセス制限をかける所。つまりMySQLのポートに対するアクセスを開放してやればいいわけです。どうすればいいかというと・・・

① defaultを使う

デフォルトの設定は、実は「同一セキュリティグループ同士のInBoundは全OK」というのがデフォルトになっています。つまり、同一のSecurityGroupを適用したインスタンスについては、InBoundのアクセスが自由にできるということです。VPC内なので基本的に外からのアクセスはないと考えてOKですし、これは妥当ですよね。

ただ、ドットインストールの手順でやっていると、quick_startという別のセキュリティグループを作っていると思います。この場合は、以下のようにして設定を追加することになると思います。

MySQL向けのInBound設定を追加する

これは、これまでの手順で作っているSecurityGroupに、MySQL向けのInBound設定を追加する方法です。具体的には、コンソール→EC2→Security Groupsとたどり、設定したいSecurity Groupを選んでから、InBoundに行き・・・

  1. Create A New Ruleを「MySQL」に
  2. SourceをSecurity GroupのID("sg-{hoge}")に

設定して追加するだけです。

f:id:posaunehm:20130610002736p:plain

これでMySQLの接続を構成して、進むことができます。やったぜ。

ちなみに

これを脱するのに2日くらいうだうだと休み時間に調べていました。。。みんな普通はdefaultを使うからか、あんまりちゃんと解説されている所見つけられなかったんですよねー。何かの参考になれば。。。