質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.13%

ec2からrdsに接続できない(多分セキュリティグループの設定)

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 346

lin.ming

score 36

やりたいこと

ec2からrdsのMariaDBに接続して、WordPressやMediaWikiを使いたいです。

やったこと

ec2のインスタンスを作成。ApacheやMariaDBをインストールしました。
ec2のIPv4 パブリックIPは18.180.xx.xx
ec2のIPv4 プライベートIPは172.31.yy.yy
ec2のIPv4 CIDRは172.31.32.0/20

ec2のデフォルトのセキュリティグループの設定がガバガバだったので、新たに作りました。
インバウンドはSSH, HTTP, HTTPS, SMTPにどこからも許可
アウトバウンドはどこへでも許可

rdsのデータベースをMariaDBで作成。無料利用分で作れるやつです。
rdsのVPCはvpc-60eae999
rdsのサブネットグループは

ap-northeast-1a    subnet-e7c20aaa    172.31.32.0/20
ap-northeast-1d    subnet-f7cebbb    172.31.16.0/20
ap-northeast-1c    subnet-392eccc    172.31.0.0/20

やったこと2

ec2にSSHでログインして、以下のコマンドを実行

~~mysql -h [MariaDBのグローバルアドレス] -P 3306 -u admin -p~~
mysql -h [MariaDBのエンドポイント] -P 3306 -u admin -p


パスワードは入力できるが、rdsの反応がなく、タイムアウトします。

~~ping [MariaDBのグローバルアドレス]~~
ping [MariaDBのエンドポイント]

を叩いてみたのですが、未到達です。

自分なりに考えた原因

セキュリティグループかサブネットグループの設定が、ec2とrdsを通信できるようになっていない。

お聞きしたいこと

セキュリティグルーブやサブネットグループをどのように設定すれば通信できるようになるか、知りたいです。

漠々とした質問ですみません。指摘されたことを追記していきますので、どうか語教示ください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

[MariaDBのグローバルアドレス]

これが何を指しているのかわかりませんが、RDSのエンドポイントのことですかね?
もしそうであれば「グローバルアドレス」という記載は不正確です。

rdsのサブネットグループ

実際にRDSが配置されているサブネットはどれですか?
また、EC2インスタンスが配置されているサブネットについても追記してください。

そもそもタイムアウトしているのなら、仰るとおりセキュリティグループかサブネットの設定である可能性が高いです。

RDSのセキュリティグループの設定はどうなっていますか?
それがEC2インスタンスのプライベートIPを含むIPレンジ、もしくはEC2インスタンスに関連付けられているセキュリティグループからの3306ポートに対する接続を許可していなければ当然タイムアウトします。

もしそれでうまく行かない場合はサブネットのルートテーブルの設定が怪しいです。
そのVPCは後から作ったものですか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/03/04 17:32

    Availability Zoneが分かればどのサブネットに配置されているかわかるはずです。

    が、それよりもまずセキュリティグループの設定です。
    RDSに設定されているセキュリティグループのインバウンドを編集してください。(さすがにコンソールを見れば編集の仕方はわかりますよね…?)
    設計方針次第ですが、とりあえず通信すればいいのであればインバウンドに下記を追加してください(アウトバウンドは編集不要です)

    タイプ: MS SQL(これを設定するとTCPの1433ポートが自動で入ります)
    ソース: カスタム sg-xxxxxxxxxx(EC2に設定したセキュリティグループのID)
    説明は任意ですが日本語を入れるとエラーになるので入力するならアルファベットで入れてください。

    EC2のプライベートIPを直接指定してもとりあえずはOKです
    https://hacknote.jp/archives/39927/

    調べれば色々出てくるので後で見てみてください。

    キャンセル

  • 2020/03/05 08:39

    Availability Zoneはap-northeast-1でした。
    よってサブネットはsubnet-e7c20xxxです。

    RDSのセキュリティグループのインバウンドを編集しました。
    ソースにEC2に設定したセキュリティグループのIDを設定したところ、
    無事にmysqlコマンドで接続できました!

    素人質問にわざわざ付き合っていただいてありがとうございます。

    キャンセル

  • 2020/03/05 08:58

    念の為お伝えしておくと、「ap-northeast-1」はリージョンです。

    ap-northeast-1a/1c/1dのどれかを見る必要がありました。
    サブネット間の通信が問題ではなかったので結果的には不要でしたけど。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る