Aurora Serverless v2 にて RDS Proxy が対応していたので触ってみた

2022.05.13

こんにちは、大前です。

先日、 Aurora Serverless v2 が晴れて GA となりました。

ドキュメントを眺めていたところ、Aurora Serverless v2 では、v1 で非対応だった RDS Proxy に対応しているらしいため、触ってみたいと思います。

You can use RDS Proxy with Aurora Serverless v2 clusters but not with Aurora Serverless v1 clusters.

引用 : Quotas and limitations for RDS Proxy - Amazon Aurora

やってみた

以下の流れで進めます。細かい手順は省いているところもありますのでご了承ください。

  1. Aurora Serverless v2 クラスターの作成
  2. Secrets Manager にてシークレット作成
  3. RDS Proxy の作成
  4. 接続確認

作業はコンソール上で行いました。

1. Aurora Serverless v2 クラスターの作成

RDS のコンソールよりデータベースの作成に進み、"標準作成" かつ "Amazon Aurora" を選択します。

エディションは MySQL 互換とし、フィルターにて "Serverless v2 を〜" を選択すると利用可能なバージョンが自動で選択されます。(ブログ執筆時点では選択可能なバージョンは 1つのみの様でした)

テンプレートは "本番稼働用" とし、クラスター識別子を記入します。(今回は "aurorav2-cluster")

マスターユーザー名はデフォルトのまま "admin" とし、パスワードは自動生成とします。

インスタンスクラスは "Serverless v2" を選択し、ACU の範囲を設定します。また、マルチ AZ 構成としました。

VPC やサブネットグループの設定を行います。Aurora に設定する Security Group は、RDS Proxy から通信できる様にしておきます。

認証方法はパスワードのみとし、作成を実行します。

今回はパスワード自動生成としたため、Aurora 作成直後にパスワードを確認できる画面が開けるため、ここでパスワードをメモしておきます。

2. Secrets Manager にてシークレット作成

続いて、Secrets Manager にて DB 接続用のパスワードをシークレットとして登録します。

新しいシークレット作成画面に進み、"Amazon RDS データベースの認証情報" を選択した状態で、先ほどメモしたパスワードを記入します。

データベースには、作成した Aurora クラスターを選択。

シークレットの名前をつけます。

自動ローテーションは今回不要とし、シークレットの作成を完了します。

3. RDS Proxy の作成

コンソールより、新規 RDS Proxy の作成に進みます。

RDS Proxy の名前を記載します。(今回は "aurorav2-cluster-proxy")

ターゲットとなる DB として、作成済みの Aurora クラスタを選択します。

続いて、接続に関するオプションを指定します。Secrets Manager シークレットは先ほど作成したシークレットを指定し、IAM ロールは新規作成とします。

Security Group も、RDS Proxy 用のものをアタッチします。

プロキシの作成を実行します。

4. 接続確認

作成された RDS Proxy を確認すると、プロキシエンドポイントが 2つできていることが確認できます。(RDS Proxy 作成時のデフォルトオプションでリーダーエンドポイントも作成する設定になっていたため)

上記エンドポイントを利用し、Aurora Serverless v2 に接続できるか確認します。(今回は EC2 を立てて接続)

MySQL クライアントのバージョンは以下となります。

sh-4.2$ mysql -V
mysql  Ver 8.0.29 for Linux on x86_64 (MySQL Community Server - GPL)
sh-4.2$

ライターエンドポイントへの接続

sh-4.2$ mysql -h aurorav2-cluster-proxy.proxy-xxxxxxxx.ap-northeast-1.rds.amazonaws.com -u admin -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4259443886
Server version: 8.0.23 Source distribution

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_read_only';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| innodb_read_only | OFF   |
+------------------+-------+
1 row in set (0.03 sec)

mysql>

リーダーエンドポイントへの接続

sh-4.2$ mysql -h aurorav2-cluster-proxy-read-only.endpoint.proxy-xxxxxxxx.ap-northeast-1.rds.amazonaws.com -u admin -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 213420618
Server version: 8.0.23 Source distribution

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_read_only';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| innodb_read_only | ON    |
+------------------+-------+
1 row in set (0.01 sec)

mysql>

それぞれ、問題なく接続できました。Aurora Serverless v2 でも、リーダーエンドポイントが利用できる様ですね。

おわりに

Aurora Serverless v2 から RDS Proxy が利用可能となりました。v1 だと RDS Proxy が利用できなかったため、「Aurora Serverless だと RDS Proxy 使えないよね?」というイメージが(個人的に)ありましたが、v2 からは使えますので是非ご活用ください。

以上、AWS 事業本部の大前でした。

参考