AWSでRDS(PostgreSQL)に接続してみた

# 概要
AWSのRDSを使ってPostgreSQLへ接続をしてみました。

# 前提事項
RDSの作成で行うパラメータ設定は、基本的にはすべてデフォルトで行っています。
また、接続方法はEC2インスタンスの踏み台サーバを使ってRDSへ接続します。

# 早速接続してみる
### EC2にpsqlクライアントを入れる
・postgresql9.6がインストールされているか確認する
今回はamazon-linux-extraパッケージを使用します

```
[root@ip-10-0-1-10 ~]# amazon-linux-extras list | grep postgre
  5  postgresql9.6            available    \
  6  postgresql10             available    [ =10  =stable ]
 41  postgresql11             available    [ =11  =stable ]
 58  postgresql12             available    [ =stable ]
 59  postgresql13             available    [ =stable ]
[root@ip-10-0-1-10 ~]#
```

使用可能状態なので、インストールしていきます

```
[root@ip-10-0-1-10 ~]# amazon-linux-extras install postgresql9.6

Installed:
  postgresql.x86_64 0:9.6.22-1.amzn2.0.1                                        

Dependency Installed:
  postgresql-libs.x86_64 0:9.6.22-1.amzn2.0.1                                   

Complete!

  5  postgresql9.6=latest     enabled      \
        [ =9.6.6  =9.6.8  =stable ]

[root@ip-10-0-1-10 ~]# psql --version
psql (PostgreSQL) 9.6.22
```

### Postgresqlサーバもインストールする
psqlが使えるだけではセットアップができません。
セットアップを行うためには、postgresql-serverのインストールもする必要があるので
それもインストールしていきます。

```
[root@ip-10-0-1-10 ~]# yum list | grep postgresql-server
postgresql-server.x86_64               9.6.22-1.amzn2.0.1             amzn2extra-postgresql9.6

[root@ip-10-0-1-10 ~]# yum install postgresql-server

Installed:
  postgresql-server.x86_64 0:9.6.22-1.amzn2.0.1                                 

Complete!

[root@ip-10-0-1-10 ~]# which postgresql-setup
/usr/bin/postgresql-setup
```

### Postgreクライアントのセットアップをする

```
[root@ip-10-0-1-10 ~]# /usr/bin/postgresql-setup initdb
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

[root@ip-10-0-1-10 ~]# systemctl start postgresql
[root@ip-10-0-1-10 ~]# systemctl status postgresql
● postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2021-07-30 14:25:58 UTC; 4s ago
  Process: 4045 ExecStartPre=/usr/libexec/postgresql-check-db-dir %N (code=exited, status=0/SUCCESS)
 Main PID: 4047 (postmaster)
   CGroup: /system.slice/postgresql.service
           ├─4047 /usr/bin/postmaster -D /var/lib/pgsql/data
           ├─4050 postgres: logger process   
           ├─4052 postgres: checkpointer process   
           ├─4053 postgres: writer process   
           ├─4054 postgres: wal writer process   
           ├─4055 postgres: autovacuum launcher process   
           └─4056 postgres: stats collector process   

Jul 30 14:25:58 ip-10-0-1-10.ap-northeast-1.compute.internal systemd[1]: Star...
Jul 30 14:25:58 ip-10-0-1-10.ap-northeast-1.compute.internal postmaster[4047]: ...
Jul 30 14:25:58 ip-10-0-1-10.ap-northeast-1.compute.internal postmaster[4047]: ...
Jul 30 14:25:58 ip-10-0-1-10.ap-northeast-1.compute.internal systemd[1]: Star...
Hint: Some lines were ellipsized, use -l to show in full.
```

### psql接続をする

```
-bash-4.2$ psql \
> --host=database-2.c5jqncbegdvz.ap-northeast-1.rds.amazonaws.com \
> --port=5432 \
> --username=postgres \
> --password \
> --dbname=TESTDB
Password for user postgres: 
psql (9.6.22)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

TESTDB=>
```

# 参考
[psql を使用した PostgreSQL DB インスタンスへの接続](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html)