1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWSでAurora PostgreSQLのプロキシを設定する方法

Last updated at Posted at 2022-07-25

はいさい!ちゅらデータぬオースティンやいびーん!んながんじゅーやみ?(みんな、元気ね?)

概要

AWSのRDSサービスでAurora版のPostgreSQLを立ち上げて、Lambdaなど、その他のAWSサービスでデータベース・プロキシが使えるようにする

RDSのプロキシとは何か?

AWSの各サービスがRDSデータベースへ張るコネクションを管理するものです。

通常なら、自前のアプリでコネクション・プールを作って、データベースとの接続を管理するものですが、複数のアプリが同じようにコネクション・プールで複数のコネクションを張っていたとしたら、いかがでしょうか?

我々が提供サービスが拡張されると、アプリ越しのデータベースとの接続を管理することが困難になります。データベースが維持するコネクション数が多くなると、パフォーマンスが悪くなります。また、新しいコネクションを張ること自体が最も大きい負荷だとされています。

そこで、一定数のコネクションを張って、それらを各アプリに割り当ててくれるのが、RDSプロキシです。

つまり、RDSプロキシは、複数のアプリに渡って使えて、AWSが管理してくれる、コネクション・プールなのです。

しかも、IAM認証も使えば、各アプリにRDS認証情報を渡す必要がなくなり、セキュリティ性も改善できます。

目次

  1. Aurora PostgreSQLのサーバーレス・データベースを作る
  2. Secret Managerでデータベース認証情報を登録する
  3. Security Groupの設定を調整する
  4. RDSプロキシを作る

Aurora PostgreSQLのサーバーレス・データベースを作る

まず、接続の対象となるデータベースを作ります。

今回は、サーバーレスv2のPostgreSQLを使いますが、プロキシと使えるバージョンが限られているようで、なお、AWSドキュメントでは具体的にどのバージョンがサーバーレスでプロキシと使えるのか、明確ではないです。

なので、本記事を書いた現時点(2022/07/25)で、Aurora PostgreSQL 13.7で出来ましたので、これを使って作ります。

RDSにアクセスする

AWSにログインして、サービス検索でRDSを探します。
スクリーンショット 2022-07-25 8.56.47.png

データベースのメニューを開く

スクリーンショット 2022-07-25 8.58.14.png

データベースを作成する

データベースを作成のオレンジ色のボタンをクリックします。
スクリーンショット 2022-07-25 9.00.09.png

各設定を埋め込む

標準作成Amazon Auroraを選択します。
スクリーンショット 2022-07-25 9.06.01.png
次はAmazon Aurora PostgreSQL 互換エディションを選択し、バージョンを13.7にします。
スクリーンショット 2022-07-25 9.07.50.png
また、今回はテスト用ということで、開発/テストのテンプレートを選択します。

次は、RDSデータベース・クラスターの名前をつけて、Postgresのマスターユーザーとパスワードを設定します。

筆者は、自動生成を使いますが、独自のパスワードを入れてもいいです。
スクリーンショット 2022-07-25 9.10.50.png

インスタンスの設定はそのままですが、要領の範囲を低くしてもいいかと思います。
スクリーンショット 2022-07-25 9.13.36.png
接続では、新しいVPCを作るようにします。既存のVPCを使うことももちろん問題ありません。
スクリーンショット 2022-07-25 9.15.13.png
新しいSecurity Groupも作っておきます。
スクリーンショット 2022-07-25 9.16.45.png
データベース認証では、IAM認証を有効にします。
スクリーンショット 2022-07-25 9.17.13.png
他の設定を調整していただいてもいいですが、最後にデータベースの作成をクリックします
スクリーンショット 2022-07-25 9.19.48.png

重要:自動生成のパスワードを控える

自動生成でデータベースのパスワードを作ってもらうことにした方は、以下のボタンをクリックしてパスワードを控えてください。

この画面を開かないと、あとからパスワードを知る方法がないので、データベースを作り直す羽目になるど!
スクリーンショット 2022-07-25 9.20.51.png
そしてこの画面でコピーできます。
スクリーンショット 2022-07-25 9.22.58.png

Secret Managerでデータベース認証情報を登録する

上記で取得したデータベースの認証情報を、次は、Secret Managerに登録します。

スクリーンショット 2022-07-25 9.24.15.png
新しいシークレットを保存するをクリックします。
スクリーンショット 2022-07-25 9.24.41.png
そして、Amazon RDSデータベースの認証情報を選択し、先ほどコピーしたパスワードをペーストします。また、ユーザー名も上記のRDSデータベース作成時に設定したmasterとします。
スクリーンショット 2022-07-25 9.25.50.png
データベースの設定で、先ほど作成したデータベースを選択します。
スクリーンショット 2022-07-25 9.27.42.png
のボタンをクリックし、次のページで名前だけを記入するので十分です。
スクリーンショット 2022-07-25 9.28.57.png
残りの設定は全て初期値でいいので、を連打して、最後に保存ボタンをクリックしてください。

すると、無事に作成できたはず!
スクリーンショット 2022-07-25 9.30.54.png

Security Groupの設定を調整する

各アプリでプロキシにアクセスできるようにするのと、プロキシがRDSデータベースにアクセスできるようにするために、Security Groupの設定を調整します。
## プロキシがRDSデータベースにアクセスできるようにする
EC2セキュリティ・グループのメニューにアクセスします。
スクリーンショット 2022-07-25 9.33.55.png
先ほど作成してmy-proxy-sgを検索して開きます。
スクリーンショット 2022-07-25 9.35.41.png
インバウンドのルールを編集をクリックします。
スクリーンショット 2022-07-25 9.35.53.png
このSecurity Group、つまりmy-proxy-sgをインバウンドのルールとして追加します。

こうすることで、RDSデータベースとRDSプロキシを同じmy-proxy-sgに設定すれば、通信ができるのです。
スクリーンショット 2022-07-25 9.38.47.png

アプリ側のSecurity Groupを作成し、my-proxy-sgに追加する

そして、次は、アプリ側で使うSecurity Groupを追加します。

上記のように、my-proxy-sgを使えば接続できるのですが、アプリとデータベースでSecurity Groupを分けることを推奨します。アプリではIPアドレスを公開することがあるからです。

セキュリティグループを作成をクリックし、名前と先ほど新規で作成したVPCを入力します。

名前はmy-application-sgとしますが、任意です。
スクリーンショット 2022-07-25 9.43.30.png

インバウンドの接続ルールはお任せします。

my-proxy-sgmy-application-sgからのインバウンドを許可する

もう一度my-proxy-sgに戻って、インバウンドルールを編集のボタンをクリックします。

そして以下のように、my-application-sgからのアクセスを許可します。
スクリーンショット 2022-07-25 9.49.46.png

これでは、プロキシを作る準備が整いました!

RDSプロキシを作る

最後に、RDSプロキシを作成します。

RDSコンソールに戻って、プロキシのリンクをクリックします。
スクリーンショット 2022-07-25 9.50.54.png

そして、プロキシを作成をクリックします。
スクリーンショット 2022-07-25 9.51.50.png
エンジンの互換性をPostgreSQLにし、プロキシ識別子(名前)を入力します。値は任意です。

TLSも有効にする必要があります。なぜなら、IAM認証を使う場合はTLSが必須だからです。
スクリーンショット 2022-07-25 9.52.54.png
ターゲットグループの設定では、先ほど作成したデータベースを選択します。

もし、作成したデータベースが表示されていなければ、Postgresのバージョンがサポートされていないものである可能性が高いので、違うバージョンでデータベースを作り直して見てください。
スクリーンショット 2022-07-25 9.55.19.png
接続では、Secret Managerで保存した認証情報を選択します。

また、IAMロールを新規するのと、IAM認証を必須にもします。
スクリーンショット 2022-07-25 9.57.40.png
追加の接続設定では、my-proxy-sgのSecurity Groupを指定します。
スクリーンショット 2022-07-25 9.59.25.png
そうすると、無事に作成できます!
スクリーンショット 2022-07-25 12.25.24.png

まとめ

ここまで、プロキシの使い方を紹介してまいりましたが、いかがでしょうか?

次の記事では、Lambda関数でこのプロキシを使って接続する方法をご紹介します。

続きはこちら!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?