PostgreSQL DB インスタンスを作成して接続する
このチュートリアルでは、EC2 インスタンスと RDS for PostgreSQL DB インスタンスを作成します。このチュートリアルでは、標準の PostgreSQL クライアントを使用して EC2 インスタンスから DB インスタンスにアクセスする方法を示します。ベストプラクティスとして、このチュートリアルでは、プライベート DB インスタンスを仮想プライベートクラウド (VPC) に作成します。ほとんどの場合、EC2 インスタンスなど、同じ VPC 内の他のリソースは DB インスタンスにアクセスできますが、VPC 外部のリソースはアクセスできません。
チュートリアルを完了すると、VPC 内の各アベイラビリティーゾーンにパブリックサブネットとプライベートサブネットができます。1 つのアベイラビリティーゾーンで、EC2 インスタンスはパブリックサブネットにあり、DB インスタンスはプライベートサブネットにあります。
重要
AWS アカウントを作成するための料金はかかりません。ただし、このチュートリアルを完了すると、使用する AWS リソースのコストが発生する可能性があります。これらのリソースが不要になった場合は、チュートリアルの完了後に削除できます。
次の図は、チュートリアルが完了した時点の設定を示しています。

このチュートリアルでは、[簡単作成] を使用して、AWS Management Console で PostgreSQL を実行する DB インスタンスを作成します。[Easy create (簡易作成)] を使用して、DB エンジンタイプ、DB インスタンスサイズ、DB インスタンス識別子のみを指定します。[Easy create (簡易作成)] では、他の設定オプションのデフォルト設定を使用します。[簡易作成] によって作成された DB インスタンスはプライベートです。
[簡易作成] の代わりに [標準作成] を使用する場合は、DB インスタンスの作成時に、可用性、セキュリティ、バックアップ、メンテナンスなど、より多くの設定オプションを指定できます。パブリック DB インスタンスを作成するには、[標準作成] を使用する必要があります。スタンダード作成で DB インスタンスを作成する方法については、Amazon RDS DB インスタンスの作成 を参照してください。
トピック
前提条件
開始する前に、以下のセクションのステップを完了してください。
ステップ 1: EC2 インスタンスを作成する
データベースへの接続に使用する Amazon EC2 インスタンスを作成します。
EC2 インスタンスを作成するには
AWS Management Console にサインインし、Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
AWS Management Console の右上で、EC2 インスタンスを作成する AWS リージョン を選択します。
-
次の図に示すように、[EC2 ダッシュボード] を選択し、次に [インスタンスの起動] を選択します。
[インスタンスを起動] ページが開きます。
-
[インスタンスを起動] ページで次の設定を選択します。
-
[Name and tags] (名前とタグ) の、[Name] (名前) で、
ec2-database-connect
と入力します。 -
[アプリケーションおよび OS イメージ (Amazon マシンイメージ)] で、[Amazon Linux] を選択し、[Amazon Linux 2023 AMI] を選択します。他の選択肢は、デフォルトの選択のままにします。
-
[Instance type] (インスタンスタイプ) で [t2.micro] を選択します。
-
[Key pair (login)] (キーペア (ログイン)) で、[Key pair name] (キーペア名) を選択して、既存のキーペアを使用します。Amazon EC2 インスタンスの新しい key pair を作成するには、[Create new key pair] (新しい key pair を作成する) を選択し、[Create key pair] (キーペアを作成する) ウィンドウを使用して作成します。
キーペアの作成については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「キーペアの作成」を参照してください。
-
ネットワーク設定の [SSH トラフィックを許可] で、EC2 インスタンスへの SSH 接続のソースを選択します。
表示された IP アドレスが SSH 接続に適している場合は、[My IP] (マイ IP)を選択できます。それ以外の場合は、Secure Shell (SSH) を使用して VPC の EC2 インスタンスへの接続に使用する IP アドレスを決定します。パブリック IP アドレスを決定するには、別のブラウザウィンドウまたはタブで、https://checkip.amazonaws.com
のサービスを使用できます。IP アドレスの例は 192.0.2.1/32 です。 多くの場合、インターネットサービスプロバイダー (ISP) 経由、またはファイアウォールの内側から静的 IP アドレスなしで接続することがあります。その場合、クライアントコンピュータが使用する IP アドレスの範囲を確認してください。
警告
SSH アクセスに
0.0.0.0/0
を使用すると、すべての IP アドレスが SSH を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使った EC2 インスタンスへのアクセスを承認します。以下のイメージは、[ネットワーク設定] セクションの例を示しています。
-
残りのセクションをデフォルト値のままにします。
-
[概要] パネルで、EC2 インスタンス設定の概要を確認し、準備ができたら、[インスタンスの起動] を選択します。
-
-
[起動ステータス] ページで、新しい EC2 インスタンスの ID (例:
i-1234567890abcdef0
) をメモします。 -
EC2 インスタンス ID を選択して、EC2 インスタンスのリストを開き、EC2 インスタンスを選択します。
-
[詳細] タブで、SSH を使用して接続するときに必要な次の値を書き留めます。
-
[インスタンスの概要] で、[パブリック IPv4 DNS] の値を書き留めます。
-
[インスタンスの詳細] で、[キーペア名] の値を書き留めます。
-
-
EC2 インスタンスの [インスタンス状態] が [実行中] になるまで待ってから、続行します。
ステップ 2: PostgreSQL DB インスタンスを作成する
Amazon RDS の基本的な構成要素は DB インスタンスです。これは、PostgreSQL データベースを実行する環境です。
この例では、[簡単作成] を使用して、DB インスタンスクラスが db.t3.micro の PostgreSQL データベースエンジンを実行する DB インスタンスを作成します。
簡易作成で PostgreSQL DB インスタンスを作成するには
-
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 Amazon RDS コンソールの右上で、DB インスタンスを作成する AWS リージョンを選択します。
-
ナビゲーションペインで、[データベース] を選択します。
-
[Create database (データベースの作成)] を選択し、[Easy create (簡易作成)] が選択されていることを確認します。
-
[設定] で、[PostgreSQL] を選択します。
-
[DB インスタンスサイズ] で、[無料利用枠] を選択します。
-
[DB instance identifier] (DB インスタンス識別子) に
database-test1
と入力します。 -
[マスターユーザー名] に、マスターユーザーの名前を入力するか、デフォルト名 (
postgres
) のままにします。[データベースの作成] ページは、次のイメージのようになります。
-
DB インスタンス用に自動生成されたマスターパスワードを使用するには、[パスワードの自動生成] を選択します。
マスターパスワードを入力するには、[パスワードの自動生成] チェックボックスをオフにして、[マスターパスワード] と [パスワードの確認] に同じパスワードを入力します。
-
以前に作成した EC2 インスタンスとの接続をセットアップするには、[EC2 接続のセットアップ - オプション] を開きます。
[EC2 コンピューティングリソースに接続] を選択します。以前に作成した EC2 インスタンスを選択します。
-
[簡易作成のデフォルト設定を表示] を開きます。
[Easy Create (簡易作成)] で使用されるデフォルト設定を調べることができます。[データベース作成後に編集可能] 列には、データベース作成後に変更できるオプションが表示されます。
-
その列の設定に [いいえ] があり、別の設定が必要な場合は、[標準作成] を使用して DB インスタンスを作成できます。
-
その列の設定に [はい] があり、別の設定が必要な場合は、[標準作成] を使用して DB インスタンスを作成するか、DB インスタンスの作成後に設定を変更できます。
-
-
[データベースの作成] を選択します。
DB インスタンスのマスターユーザー名およびパスワードを表示するには、[認証情報の詳細の表示] を選択します。
表示されるユーザー名とパスワードを使用して、マスターユーザーとして DB インスタンスに接続できます。
重要
マスターユーザーのパスワードを再度表示することはできません。記録していない場合は、変更する必要がある場合があります。
DB インスタンスが有効になった後にマスターユーザーのパスワードを変更する必要がある場合は、そのように DB インスタンスを変更することができます。DB インスタンスの変更の詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。
-
[データベース] リストで、新しい PostgreSQL DB インスタンスの名前を選択し、詳細を表示します。
DB インスタンスが使用できるようになるまで、DB インスタンスのステータスは [作成中] のままです。
ステータスが [Available] (利用可能) に変わったら、DB インスタンスに接続できます。DB インスタンスクラスとストレージの合計によっては、新しいインスタンスを使用できるようになるまで最長 20 分かかることがあります。
ステップ 3: PostgreSQL DB インスタンスに接続する
pgadmin または psql を使用して DB インスタンスに接続できます。この例では、psql コマンドラインクライアントを使用して PostgreSQL DB インスタンスに接続する方法について説明します。
psql を使用して PostgreSQL DB インスタンスに接続するには
-
DB インスタンスのエンドポイント (DNS 名) とポート番号を見つけます。
-
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 Amazon RDS コンソールの右上で、DB インスタンスの AWS リージョン を選択します。
-
ナビゲーションペインで、[データベース] を選択します。
-
PstgreSQL DB インスタンス名を選択して、詳細を表示します。
-
接続とセキュリティ タブで、エンドポイントをコピーします。また、ポート番号を書き留めます。DB インスタンスに接続するには、エンドポイントとポート番号の両方が必要です。
-
-
Linux インスタンスに関する Amazon EC2 ユーザーガイドの「Linux インスタンスに接続する」のステップに従って、先ほど作成した EC2 インスタンスに接続します。
SSH を使用して EC2 インスタンスに接続することをお勧めします。SSH クライアントユーティリティが Windows、Linux、または Mac にインストールされている場合は、次のコマンド形式でインスタンスに接続できます。
ssh -i
location_of_pem_file
ec2-user@ec2-instance-public-dns-name
例えば、
ec2-database-connect-key-pair.pem
が Linux の/dir1
に保存されていて、EC2 インスタンスのパブリック IPv4 DNS がec2-12-345-678-90.compute-1.amazonaws.com
であるとします。SSH コマンドは次のようになります。ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
EC2 インスタンスのソフトウェアを更新して、最新のバグ修正とセキュリティ更新を入手します。これを行うには、次のコマンドを使用します。
注記
-y
オプションを指定すると、確認メッセージを表示せずに更新をインストールします。インストール前に更新を確認するには、このオプションを省略します。sudo dnf update -y
-
PostgreSQL の psql コマンドラインクライアントを Amazon Linux 2023 にインストールするには、次のコマンドを実行します。
sudo dnf install postgresql15
-
PostgreSQL DB インスタンスに接続します。例えば、クライアントコンピュータのコマンドプロンプトで、次のコマンドを入力します。このアクションにより、psql クライアントを使用して、PostgreSQL DB インスタンスに接続できます。
の DB インスタンスの DNS 名 (エンドポイント) を、endpoint
で使用したマスターユーザー名に置き換えます。パスワードの入力を求められたときに使用したマスターパスワードを入力します。postgres
psql --host=
endpoint
--port=5432 --username=postgres
ユーザーのパスワードを入力すると、次のような出力が表示されます。
psql (14.3, server 14.6) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off) Type "help" for help. postgres=>
PostgreSQL DB インスタンスへの接続の詳細については、「PostgreSQL データベースエンジンを実行する DB インスタンスへの接続」を参照してください。DB インスタンスに接続できない場合は、「RDS for PostgreSQL インスタンスへの接続に関するトラブルシューティング」を参照してください。
セキュリティのためには、暗号化された接続を使用することがベストプラクティスです。クライアントとサーバーが同じ VPC にあり、ネットワークが信頼できる場合に限り、暗号化されていない PostgreSQL 接続を使用します。暗号化された接続の使用については、「 SSL 経由での PostgreSQL DB インスタンスへの接続」を参照してください。
-
SQL コマンドを実行する。
例えば、次の SQL コマンドは、現在の日付と時刻を表示します。
SELECT CURRENT_TIMESTAMP;
ステップ 4: EC2 インスタンスと DB インスタンスを削除する
作成したサンプル EC2 インスタンスと DB インスタンスに接続して、探索したら、料金がこれ以上発生しないように、それらを削除します。
EC2 インスタンスを削除するには
AWS Management Console にサインインし、Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
ナビゲーションペインで、[インスタンス] を選択します。
-
EC2 インスタンスを選択し、[インスタンスの状態]、[インスタンスの終了] の順に選択します。
-
確認を求めるメッセージが表示されたら、[Terminate (終了)] を選択します。
EC2 インスタンスの削除の詳細については、「Amazon EC2 Linux インスタンス用ユーザーガイド」の「インスタンスの終了」を参照してください。
最終的な DB スナップショットを作成しないで DB インスタンスを削除するには
-
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
ナビゲーションペインで、[データベース] を選択します。
-
削除する DB インスタンスを選択します。
-
[Actions] (アクション) として、[Delete] (削除) を選択します。
-
[最終スナップショットを作成] と [自動バックアップの保持] をクリアします。
-
確認を完了し、[削除] を選択します。
(オプション) DB インスタンスを Lambda 関数に接続する
RDS for PostgreSQL DB インスタンスを Lambda サーバーレスコンピューティングリソースに接続することもできます。Lambda 関数を使用すると、インフラストラクチャをプロビジョニングしたり管理したりせずにコードを実行できます。Lambda 関数を使用すると、1 日に 数十件のイベントから 1 秒間に数百件のイベントまで、あらゆる規模のコード実行リクエストに自動的に応答することもできます。詳細については、「Lambda 関数と DB インスタンスを自動的に接続する」を参照してください。