RDS コンソールの新しい接続支援機能を試してみた
はじめに
CLI やアプリケーションからデータベースに接続するとき、DB エンジンによってお作法が異なります。
サクッと CLI からデータベースに接続して確認したいときに、「MySQL に接続するコマンドは・・・」といったようにググり始める人も少なくないと思います。
RDS のマネジメントコンソールに、そのようなお悩みを解決してくれる機能が追加されていたので紹介いたします。
試してみた
コードスニペット

CLI やアプリケーションから利用するときのスニペットが生成されています。リーダーかライターかなどの接続先を選べたり、RDS プロキシにも対応しているのが嬉しいですね。
選択可能なスニペットは以下の通りで、一通り揃っているようです。

試しに PHP を見てみますと、pgsql を用いたスタンダードなコードになっていました。

さて、ここで MariaDB のスニペットを見てみましょう。

(モザイクで少し読みづらいですが) お気づきの方もいらっしゃると思いますが、このコマンドは動作しません。なぜなら、シングルクォート内でコマンド置換をしているとそれはリテラル文字列として扱われるため、Secrets Manager から取得するパスワードが展開されないからです。
また、手元の環境では CA 証明書のパスも正しくなかったため、適切な値に修正する必要があります。CA 証明書は以下よりダウンロードできます。
ということで、MariaDB の場合、最終的に以下のように調整する必要があります。
mysql -h hoge.piyo.ap-northeast-1.rds.amazonaws.com -P 3306 -u admin -p"$(aws secretsmanager get-secret-value --secret-id 'arn:aws:secretsmanager:ap-northeast-1:111111111111:secret:rds!db-XXXXXXXXXXXX' --query SecretString --output text | jq -r '.password')" --ssl-verify-server-cert --ssl-ca=ap-northeast-1-bundle.pem sample
上記は MariaDB の例ですが、その他にもスニペットをそのまま使うことが難しいケースもあります。スニペットは出発点として利用し、ドキュメントを参照しながら環境に合わせて調整しましょう。
その他、Secrets Manager でパスワード管理していない場合は以下のようになっていました。

Oracle はおなじみの sqlplus ですね。

SQL Server だとこうでした。

クラウドシェル
セキュリティベストプラクティスに従い、DBをプライベートサブネットに設置している場合が多いと思います。そのような環境では CloudShell が特に便利です。

ほとんどワンクリックで CloudShell 環境を立ち上げられます。

パスワードを入力してデータベースにログインすれば、通常通りに利用可能です。

エンドポイント
こちらは以前まで表示されていたものと同じですね。

クエリエディタ
RDS Data API を有効化している場合、クエリエディタへのリンクも表示されます。

おまけ
これまた地味に嬉しいのですが、ワンクリックで Secrets Manager で管理しているパスワードがコピーできるようになっています。

おわりに
日常的な業務では無くても、システムを運用しているとデータベースに直接接続したくなることは時々あります。
この機能によって、少しは負担が軽くなるのではないかと思います。ぜひお試しください。






