以前の記事で、VPCを使ってEC2の環境を作りましたが、一般的にwebアプリはwebサーバーとDBがセットになることがほとんどだと思いますので、AWSでこの環境を構築してみようと思います。
イメージ図
*EC2のサブネットは外に通じていますが、DBは通じていないため、直でアクセスができません。アクセスするときはEC2をSSHで踏み台にして、そこからアクセスする必要があります。
RDSの設定に関するポイント
サブネットグループ
DBのサブネットは個別のサブネットではなく、複数のアベイラビリティーゾーンを含むサブネットグループという複数のサブネットを定義することになります。
*アベイラビリティーゾーン・・リージョンのさらに細分化された地域のことです。リージョンが国ならアベイラビリティーゾーンはその国の中の地域のようなものになるかと思います。
そのためにDBのサブネットはアベイラビリティーゾーンを散らせておきましょう。
RDSの設置画面から「サブネットグループ」→「DBサブネットグループ」→「サブネットグループ」の選択から複数のサブネットを選択すればOKです。
セキュリティグループ
RDSはEC2のみから接続が可能なようにしますので、下記のようにセキュリティグループを設定すればOKです。
その他のポイント
DBのホスト名ですが、相当するのは「エンドポイント」になります。
確認は当然EC2からDBに繋げるか(PHPの簡単なスクリプトなどでの検証が有効)を試せばOK。
上記のように設定しておけばEC2サーバーを踏み台しにしてRDSにつなげますが、直で繋ぎたい場合は、下記3点に気をつけて設定しましょう。
- RDS作成時にパブリックアクセシビリティを「はい」にしておく
- RDSのセキュリティグループで「MySQL/Aurora」「マイIP」を選択し、自分のIPを許可しておく
- RDSのサブネットでルートテーブルの紐付けが必要