RHEL9のAMIで起動したAmazon EC2インスタンスからAmazon Aurora for PostgreSQLに接続するまでの手順を紹介します。
PostgreSQL16データベースに接続する手順
■前提
今回の手順の前提は以下の通りです。
-
EC2インスタンスが起動していること
Red Hat Enterprise Linux version 9 (HVM), EBS General Purpose (SSD) Volume Type
-
RDSデータベースが起動していること
Aurora PostgreSQL (Compatible with PostgreSQL 16.4)
-
上記のEC2インスタンスとRDSデータベースが疎通可能であること
■PostgreSQLクライアントのインストール
Aurora PostgreSQLに接続するためのPostgreSQLクライアントをEC2インスタンスにインストールします。
以下のコマンドを実行します。
# PostgreSQLのバージョン16に関する情報の確認
sudo dnf module info postgresql:16
# PostgreSQLのバージョン16を有効化
sudo dnf module enable postgresql:16
# PostgreSQLモジュールが有効になっているか確認
sudo dnf module list postgresql
# PostgreSQLクライアントのインストール
sudo dnf install -y postgresql
# インストール確認
psql --version
【実行結果】
[ec2-user@ip-10-0-15-52 ~]$ sudo dnf module enable postgresql:16
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
Last metadata expiration check: 0:27:50 ago on Sun 03 Nov 2024 05:18:03 AM UTC.
Dependencies resolved.
===============================================================================================================================================================================================
Package Architecture Version Repository Size
===============================================================================================================================================================================================
Enabling module streams:
postgresql 16
Transaction Summary
===============================================================================================================================================================================================
Is this ok [y/N]: y
Complete!
[ec2-user@ip-10-0-15-52 ~]$ sudo dnf module list postgresql
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
Last metadata expiration check: 0:29:29 ago on Sun 03 Nov 2024 05:18:03 AM UTC.
Red Hat Enterprise Linux 9 for x86_64 - AppStream from RHUI (RPMs)
Name Stream Profiles Summary
postgresql 15 client, server [d] PostgreSQL server and client module
postgresql 16 [e] client, server [d] PostgreSQL server and client module
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[ec2-user@ip-10-0-15-52 ~]$ sudo dnf install -y postgresql
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
Last metadata expiration check: 0:31:07 ago on Sun 03 Nov 2024 05:18:03 AM UTC.
Dependencies resolved.
===============================================================================================================================================================================================
Package Architecture Version Repository Size
===============================================================================================================================================================================================
Installing:
postgresql x86_64 16.4-1.module+el9.4.0+22207+8466e31f rhel-9-appstream-rhui-rpms 1.9 M
Installing dependencies:
postgresql-private-libs x86_64 16.4-1.module+el9.4.0+22207+8466e31f rhel-9-appstream-rhui-rpms 145 k
Transaction Summary
===============================================================================================================================================================================================
Install 2 Packages
Total download size: 2.0 M
Installed size: 8.0 M
Downloading Packages:
(1/2): postgresql-private-libs-16.4-1.module+el9.4.0+22207+8466e31f.x86_64.rpm 3.1 MB/s | 145 kB 00:00
(2/2): postgresql-16.4-1.module+el9.4.0+22207+8466e31f.x86_64.rpm 23 MB/s | 1.9 MB 00:00
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 19 MB/s | 2.0 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : postgresql-private-libs-16.4-1.module+el9.4.0+22207+8466e31f.x86_64 1/2
Installing : postgresql-16.4-1.module+el9.4.0+22207+8466e31f.x86_64 2/2
Running scriptlet: postgresql-16.4-1.module+el9.4.0+22207+8466e31f.x86_64 2/2
Verifying : postgresql-16.4-1.module+el9.4.0+22207+8466e31f.x86_64 1/2
Verifying : postgresql-private-libs-16.4-1.module+el9.4.0+22207+8466e31f.x86_64 2/2
Installed products updated.
Installed:
postgresql-16.4-1.module+el9.4.0+22207+8466e31f.x86_64 postgresql-private-libs-16.4-1.module+el9.4.0+22207+8466e31f.x86_64
Complete!
[ec2-user@ip-10-0-15-52 ~]$ psql --version
psql (PostgreSQL) 16.4
■Aurora PostgreSQLへの接続準備
接続に必要な情報(ユーザー名、ホスト、ポート)を設定します。
接続の簡便化を図るために、環境変数を設定しましょう。パスワードに関しては、セキュリティの観点から環境変数に設定せずに、手動で打ち込むこととします。
AWSを利用しているので、パスワード管理にAWS Secrets Managerを利用するのも方法の一つですね。AWS Secrets Managerを利用した接続方法はこちら※準備中
以下の"<>"部分を自身の環境に合わせて修正し、コマンドを実行します。
USERNAME=<ログインするデータベースユーザー名 例:postgres>
HOST=<エンドポイント名 例:xxxxxxx.cluster-xxxxxxx.ap-southeast-1.rds.amazonaws.com>
PORT=5432
■接続テスト
psqlコマンドを使ってAurora PostgreSQLに接続し、接続が成功するかを確認します。
以下のコマンドを実行します。
psql -h $HOST -p $PORT -U $USERNAME
【実行結果】※ログインパスワードが聞かれます。
[ec2-user@ip-10-0-15-52 ~]$ psql -h $HOST -p $PORT -U $USERNAME
psql (16.4)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
postgres=>
接続できたので、データベースエンジンのバージョンを確認してみます。
SELECT version();
【実行結果】
postgres=> SELECT version();
version
-------------------------------------------------------------------------------------------------
PostgreSQL 16.4 on x86_64-pc-linux-gnu, compiled by x86_64-pc-linux-gnu-gcc (GCC) 9.5.0, 64-bit
(1 row)
接続手順の紹介は以上です。
まとめ
今回は、EC2(RHEL9)からAmazon Aurora for PostgreSQL 16に接続するための手順を紹介しました。
設定手順は一見シンプルですが、OSのバージョンやAuroraの設定によって、接続がうまくいかないケースも発生する可能性があります。
たとえば、PostgreSQLのクライアントバージョンの違いや、必要なネットワーク設定、AWS IAMによる権限などが原因となることがあります。
また、セキュリティグループやVPCの設定が不適切な場合、接続できない場合もあるため注意が必要です。
参考リンク:AWS公式ドキュメント
↓ほかの協栄情報メンバーもAmazon RDSについての記事を公開しています。ぜひ参考にしてみてください。
■“Amazon RDS for SQL Server”のクロスリージョンリードレプリカを作成・昇格してみた(齊藤弘樹)
■RDSのMySQL5.7標準サポート終了に伴う8.0へのアップグレードについて(ito.d)
■AWS RDS for Oracleメモリー不足際の解決案(dapeng)