EC2 コンソールから RDS / Aurora への接続設定を自動で出来るようになりました

2022.10.12

いわさです。

本日のアップデートで EC2 コンソール上で既存の RDS をターゲットに接続設定を自動で行えるようになりました。
これを行うと同一 VPC 内の対象 EC2 と RDS の間でセキュリティグループの設定を自動で行ってくれます。

実は少し前のアップデートで似たようなものがありました。

こちらは RDS を作成する際に接続を許可する EC2 を選択することでセキュリティグループや DB サブネットグループを自動作成してくれるというものでした。
今回のアップデートと何が違うのかを見てみましょう。

事前準備

今回の機能は同一 VPC 内の RDS を指定して接続構成を行うというものです。

よって VPC と RDS を用意します。
VPC についてはいくつかのサブネットを作成しました。

DBサブネットグループを作成し、RDS for PostgreSQL と Aurora MySQL を用意します。

この時点ではデフォルトで新規セキュリティグループを設定している状態です。
デフォルトでクライアント IP アドレスからのインバウンドが許可されるルールが設定されるのでこのデフォルトルールだけ削除しておきます。

起動済みインスタンスで構成可能

今回の機能は起動済みの EC2 を選択し、接続対象の RDS を選択します。
そのため RDS 作成時の接続オプションのように新規インスタンス作成時のオプションとしては使うことが出来ません。
一度起動させた後に構成を行います。

このようにインスタンスのネットワークオプションに Connect RDS database が追加されています。

なお、こちらは起動してないと非活性で選択することが出来ません。

起動済みのクラスターかインスタンスを選択する

データベースへの接続設定を行う際にはクラスターかインスタンスを選択します。
Aurora はクラスターで RDS はインスタンスを選択します。

対象のクラスター/インスタンスを選択したらあとは接続ボタンを押して終わりです。
以下は EC2 と RDS 間で全く接続構成を行っていない状態の場合です。セキュリティグループのチェックから新規作成・アタッチまでを自動で行ってくれます。

VPC 外のデータベースリソースも選択肢に表示はされますがエラーメッセージが表示されます。

自動構成された設定を確認してみましょう。

EC2 にデータベースへのアウトバウンドが許可されたセキュリティグループが追加されている

EC2 セキュリティグループは RDS/Aurora へのアウトバウンドが構成されています。
セキュリティグループ名は自動で命名されます、指定出来ません。

データベースに EC2 からのインバウンドを許可したセキュリティグループが追加されている

RDS のセキュリティグループは EC2 にアタッチされたセキュリティグループからの接続ポートへのインバウンドが許可されています。
ここでの接続ポートは MySQL であれば 3306、PostgreSQL であれば 5432 が対象となっていました。

複数の接続先を設定した場合は組み合わせごとにセキュリティグループのペアが作成された

なお、別のクラスター/インスタンスの接続を追加すると対象のセキュリティグループの組み合わせが追加されていきます。

Babelfishはサポートされていない

Aurora PostgreSQL に SQL Server のインターフェースでアクセスすることが出来る拡張機能の Babelfish でも試してみました。
既定では以下のように 5432 と 1433 の 2 つを許可してほしいところですが、果たして。

結果、5432 のみつまり PostgreSQL のみが許可される状態でした。
Babelfish を使う方は注意しましょう。

既に構成済みの場合

さらに、いくつか前提条件にあわせて自動構成の挙動が変わることに気がついたので試してみました。
まず、EC2 に対して自動構成済みのデータベースを選択した場合は以下のように自動構成処理がスキップされました。

EC2 と RDS/Aurora の状態を確認し必要なものを構成する仕組みのようです。

自動構成したセキュリティグループを EC2 と RDS からデタッチした場合

自動構成を行うと ec2-rds-x 、rds-ec2-x というセキュリティグループが作成されアタッチされます。
このセキュリティグループをデタッチして再度自動構成を行ってみるとどうなるでしょうか。

以下のように EC2 と RDS からそれぞれデタッチします。

この場合は次のように初回と同様新しいセキュリティグループのペアが作成されました。

もう少し試してみましょう。

自動構成したセキュリティグループを EC2 のみデタッチした場合

先程と同じ要領で、EC2 からのみデタッチして RDS からはデタッチしなかった場合です。

この場合は新規セキュリティグループは作成されずに、RDS で許可されたセキュリティグループがそのまま EC2 にアタッチされました。

自動構成されたセキュリティグループを RDS のみデタッチした場合

次は逆に RDS のみデタッチした場合です。
この場合は次のように RDS には新しいセキュリティグループが作成されてアタッチされました。
既存のセキュリティグループは流用されませんでした。

さらに、EC2 用のセキュリティグループも新規作成されました。
このことから、自動構成処理では指定したデータベースのセキュリティグループをチェックし、インバウンド許可されているセキュリティグループが存在するか確認し、存在していれば EC2 にアタッチするという流れのようですね。

さいごに

本日は EC2 コンソールから RDS / Aurora への接続設定が出来るようになったので試してみました。

まず初めに、「接続設定」というのはセキュリティグループの自動設定を指していることを確認しました。 そして、必ずセキュリティグループは作成されるというわけではなく選択したデータベースに既にインバウンド設定が構成済みの場合はセキュリティグループの新規作成を行うかどうかを判断していることもわかりました。

前回の RDS コンソール画面からの自動接続機能は、DB サブネットグループの自動作成などを含んでいたこともあってか利用にあたって様々な前提条件を許容しなければいけないイメージがありました。
今回の機能はそれと比べると直感的で使いやすい気がします。