すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:RDS for PostgreSQL インスタンスからインターネット経由での外部データベースへのアクセス

最終更新日:Aug 22, 2026

RDS for PostgreSQL インスタンスは、Virtual Private Cloud (VPC) 内で実行されるため、パブリックインターネットには直接アクセスできません。このトピックでは、インターネット NAT ゲートウェイと送信元ネットワークアドレス変換 (SNAT) エントリを設定し、RDS for PostgreSQL インスタンスが外部データラッパー (FDW) 拡張機能を使用してインターネット経由で外部データベース (MySQL、SQL Server、PostgreSQL、または Redis) に接続できるようにする方法について説明します。

SNAT エントリにより、インスタンスはアウトバウンドでインターネットにアクセスできるようになります。外部ネットワークから NAT ゲートウェイを介してインスタンスに到達することはできません。

前提条件

開始する前に、以下が準備できていることを確認してください:

  • RDS for PostgreSQL インスタンス。 詳細については、「RDS for PostgreSQL インスタンスをすばやく作成する」をご参照ください。

  • パブリック IP アドレスでインターネット経由でアクセス可能なターゲットデータベース (MySQL、SQL Server、PostgreSQL、または Redis)

  • お使いの RDS for PostgreSQL のバージョンでサポートされている FDW 拡張機能。 データベースタイプごとに必要な拡張機能については、「RDS for PostgreSQL でサポートされている拡張機能」をご確認ください:

    • MySQL: mysql_fdw

    • SQL Server: tds_fdw

    • PostgreSQL: postgres_fdw

    • Redis: redis_fdw

  • RDS for PostgreSQL インスタンスのアカウント。 詳細については、「アカウントの作成」をご参照ください。

  • ターゲットデータベースのアカウント、およびデータを含むデータベース

FDW を設定する前に、ターゲットデータベースから次の情報を収集してください:

  • パブリック IP アドレスまたはホスト名

  • ポート番号 (MySQL のデフォルトは 3306)

  • データベース名

  • FDW 接続用のユーザー名とパスワード

インターネット NAT ゲートウェイの設定

ステップ1:NAT ゲートウェイの作成

  1. NAT ゲートウェイ コンソールにログインします。

  2. [インターネット NAT ゲートウェイ] ページで、[インターネット NAT ゲートウェイの作成] をクリックします。

  3. (オプション) NAT Gateway を初めて使用する場合は、[サービスリンクロールの作成] セクションで [サービスリンクロールの作成] をクリックします。このボタンは [インターネット NAT ゲートウェイ] ページに表示されます。

  4. [インターネット NAT ゲートウェイの作成] ページで、次のパラメーターを設定し、[今すぐ購入] をクリックします。

    以下の表では、主要なパラメーターのみを記載します。 すべてのパラメーターについては、「インターネット NAT ゲートウェイの SNAT 機能を使用したインターネットアクセス」をご参照ください。
    パラメーター 説明
    [リージョン] RDS for PostgreSQL インスタンスと同じリージョンを選択します
    [ネットワークとゾーン] [Database Connection]RDS for PostgreSQL インスタンスの VPC と vSwitch を選択します。 VPC は、RDS コンソールの **[データベース接続]** ページで確認できます
    [ネットワークタイプ] [インターネット NAT ゲートウェイ] を選択します
    [EIP] [後で設定] を選択します
  5. [確認] ページで設定を確認し、[今すぐ有効化] をクリックします。

ゲートウェイが作成されると、[Internet NAT Gateway] ページに表示されます。

创建NAT网关

ステップ2:Elastic IP Address (EIP) の関連付け

  1. NAT ゲートウェイ コンソールで、作成した NAT ゲートウェイのインスタンス ID をクリックします。

  2. [関連付け EIP] タブで、[EIP の関連付け] をクリックします。

  3. [EIP の関連付け] ダイアログボックスで、[EIP の購入と関連付け]を選択します。

    绑定弹性公网IP

  4. [OK] をクリックします。

EIP は[関連付けられた EIP] セクションに表示されます。

已绑定的弹性公网IP

ステップ3:SNAT エントリの作成

  1. NAT ゲートウェイ コンソールで、作成した NAT ゲートウェイのインスタンス ID をクリックします。

  2. [SNAT] タブで、[SNAT エントリの作成] をクリックします。

  3. 以下のパラメーターを設定し、[OK] をクリックします。

    パラメーター 説明
    [SNAT エントリ] [vSwitch 粒度] を選択します。vSwitch 内のすべてのインスタンスは、EIP を使用してインターネットにアクセスできるようになります
    [vSwitch の選択] RDS for PostgreSQL インスタンスの vSwitch を選択します
    [EIP の選択] 前の手順で関連付けた EIP を選択します

SNAT エントリは[SNAT エントリリスト]に表示されます。

已配置的SNAT

ターゲットデータベースの設定

ターゲットデータベースのホワイトリストまたはファイアウォールルールに EIP を追加し、RDS インスタンスからの接続を受け入れるように設定します。

RDS for PostgreSQL インスタンスの設定

以下の手順では MySQL データベースを例とし、mysql_fdw 拡張機能を使用します。ターゲットデータベースの種類に応じて、拡張機能名と FDW オプションを適切な値に置き換えてください。

ステップ1:RDS インスタンスへの接続

RDS for PostgreSQL インスタンスに接続します。 詳細については、「PostgreSQL インスタンスへの接続」をご参照ください。

ステップ2:FDW 拡張機能のインストール

次のコマンドを実行します:

CREATE EXTENSION mysql_fdw;

ステップ3:サーバ定義の作成

ターゲットデータベースを参照するサーバ定義を作成します。プレースホルダーを実際の値に置き換えてください:

CREATE SERVER <server_name>
FOREIGN DATA WRAPPER mysql_fdw OPTIONS (
  host '<public_IP_of_the_target_database>',
  port '<port_of_the_target_database>'
);

MySQL データベースの例:

CREATE SERVER mysql_server80
FOREIGN DATA WRAPPER mysql_fdw OPTIONS (
  host 'XX.XX.XX.XX',
  port '3306'
);

期待される出力:

CREATE SERVER

ステップ4:ユーザーマッピングの作成

サーバ定義を RDS インスタンス内のユーザーにマッピングします。このマッピングにより、ユーザーはターゲットの MySQL データベースで認証できるようになります:

CREATE USER MAPPING
FOR <RDS_for_PostgreSQL_username> SERVER <created_server_name> OPTIONS (
  username '<username_for_the_target_database>',
  password '<password_for_the_target_database>'
);

例:

CREATE USER MAPPING
FOR pg_client SERVER mysql_server80 OPTIONS (
  username 'testuser',
  password 'U123456!'
);

期待される出力:

CREATE USER MAPPING

ステップ5:外部テーブルの作成

ターゲットデータベースのテーブルにマッピングする外部テーブルを作成します。列名とデータ型は、リモートテーブルと一致させる必要があります:

CREATE FOREIGN TABLE <foreign_table_name> (
  id int,
  name varchar(10)
)
SERVER <created_server_name> OPTIONS (
  dbname '<database_name_of_the_target_database>',
  table_name '<table_name_of_the_target_database>'
);

例:

CREATE FOREIGN TABLE mysql_fdw_test (
  id int,
  name varchar(10)
)
SERVER mysql_server80 OPTIONS (
  dbname 'testdb',
  table_name 'test'
);

期待される出力:

CREATE FOREIGN TABLE

ステップ6:接続の検証

外部テーブルにクエリを実行し、ターゲットの MySQL データベースからデータが返されることを確認します:

SELECT * FROM mysql_fdw_test;

クエリによってターゲットデータベースから行が返された場合、設定は完了です。

次のステップ