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

ApsaraDB RDS:ApsaraDB RDS for PostgreSQLインスタンスを使用してインターネット経由で外部データベースにアクセスする

最終更新日:Dec 05, 2024

このトピックでは、PostgreSQLのfdw拡張機能を使用して、ApsaraDB RDS for PostgreSQLインスタンスがパブリックIPアドレスを持つ外部データベースにアクセスできるようにする方法について説明します。

背景情報

ApsaraDB RDS for PostgreSQLはfdw拡張機能をサポートしており、RDSインスタンスがMySQL、SQL Server、PostgreSQL、Redisなどのデータベースエンジンを実行する外部データベースにアクセスできるようにします。 RDSインスタンスが仮想プライベートクラウド (VPC) に作成されます。 インターネット経由でアクセスできるデータベースサービスにアクセスするには、RDSインスタンスにインターネットNATゲートウェイを設定し、EIP (elastic IP address) をインターネットNATゲートウェイに関連付ける必要があります。

このトピックでは、インターネットNATゲートウェイを設定し、EIPをインターネットNATゲートウェイに関連付けて、RDSインスタンスがインターネット経由でデータベースにアクセスできるようにする方法について説明します。 さらに、NATゲートウェイのSNATルールを設定して、RDSインスタンスからインターネットへのアウトバウンド接続のみを許可できます。 RDSインスタンスがインターネット経由でサービスを提供していないか、インターネット経由でアクセスできません。 これにより、RDSインスタンスのネットワークセキュリティを確保できます。

インターネットNATゲートウェイとSNATの詳細については、「インターネットNATゲートウェイのSNAT機能を使用してインターネットにアクセスする」をご参照ください。

前提条件

  • パブリックIPアドレスを持つ外部データベースが利用可能です。 データベースは、MySQL、SQL Server、PostgreSQL、またはRedisを実行できます。

  • RDSインスタンスが作成されました。 詳細については、「ApsaraDB RDS for PostgreSQL インスタンスの作成」をご参照ください。

    重要

    RDSインスタンスが外部データベースにアクセスできるようにするには、次の拡張機能が必要です。 RDSインスタンスが拡張機能をサポートしていることを確認してください。 各PostgreSQLバージョンでサポートされている拡張機能の詳細については、「サポートされている拡張機能」をご参照ください。

    • MySQL: mysql_fdw

    • SQL Server: tds_fdw

    • PostgreSQL: postgres_fdw

    • Redis: redis_fdw

  • 外部データベースとRDSインスタンスのアカウントが作成されます。

    • 外部データベースのアカウントを作成する方法の詳細については、各データベースエンジンの公式ドキュメントを参照してください。

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

  • 外部データベースのデータが作成されます。

手順

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

  1. NATゲートウェイを作成します。

    1. NAT Gatewayコンソールにログインします。

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

    3. オプション。 インターネットNATゲートウェイページの [サービスにリンクされたロールの作成] セクションで、[サービスにリンクされたロールの作成] をクリックして、サービスにリンクされたロールを作成します。 インターネットNATゲートウェイを初めて作成する場合は、この手順が必要です。 サービスにリンクされたロールの作成後、インターネットNATゲートウェイを作成できます。

    4. 購入ページで、次のパラメーターを設定し、今すぐ購入をクリックします。

      説明

      次の表に、主要なパラメーターのみを示します。 すべてのパラメーターの詳細については、「インターネットNATゲートウェイのSNAT機能を使用したインターネットへのアクセス」をご参照ください。

      パラメーター

      説明

      リージョン

      インターネットNATゲートウェイを作成するリージョンを選択します。 リージョンは、RDSインスタンスのリージョンと同じである必要があります。

      [VPC]

      インターネットNATゲートウェイが属するVPCを選択します。 VPCはRDSインスタンスのVPCと同じである必要があります。 ApsaraDB RDSコンソールの [データベース接続] ページに移動して、RDSインスタンスのVPCを表示できます。

      vSwitchの関連付け

      インターネットNATゲートウェイが属するvSwitchを選択します。 vSwitchは、RDSインスタンスのvSwitchと同じである必要があります。 ApsaraDB RDSコンソールの [データベース接続] ページに移動して、RDSインスタンスのvSwitchを表示できます。

      アクセスモード

      この例では、[後で設定] が選択されています。

    5. 確認ページで情報を確認し、[利用規約] チェックボックスをオンにして、確認をクリックします。

      インターネットNATゲートウェイは、[インターネットNATゲートウェイ] ページで確認できます。创建NAT网关

  2. EIPをインターネットNATゲートウェイに関連付けます。

    1. インターネットNATゲートウェイページで、新しいインターネットNATゲートウェイを見つけ、そのIDをクリックして [基本情報] タブに移動します。

    2. 関連付けられたElastic IPアドレスタブで、Elastic IPアドレスのバインドをクリックします。

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

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

      EIPをインターネットNATゲートウェイに関連付けると、[関連付けられたElastic IPアドレス] タブにEIPが表示されます。已绑定的弹性公网IP

  3. SNATエントリの作成

    1. インターネットNATゲートウェイページで、新しいインターネットNATゲートウェイを見つけ、そのIDをクリックして [基本情報] タブに移動します。

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

    3. SNATエントリの作成ページで、以下のパラメーターを設定し、OKをクリックします。

      パラメーター

      説明

      SNATエントリ

      VPC、vSwitch、ECSインスタンス、またはカスタムCIDRブロックのいずれのSNATエントリを作成するかを指定します。 この例では、[vSwitchの指定] が選択されています。 このオプションは、指定されたvSwitchにアタッチされているRDSインスタンスのみが、指定されたパブリックIPアドレスを使用してインターネットにアクセスできることを指定します。

      vSwitchの選択

      ドロップダウンリストからRDSインスタンスのvSwitchを選択します。

      EIPの選択

      1つ以上のEIPを選択してインターネットにアクセスします。 この例では、ドロップダウンリストから単一のEIPが選択されています。

      SNATエントリの作成後、[SNATエントリリスト] セクションでSNATエントリを表示できます。已配置的SNAT

外部データベースの設定

インターネットNATゲートウェイに関連付けられているEIPからのアクセスを許可するには、外部データベースのホワイトリストを設定する必要があります。

  • 外部データベースがMySQLを実行している場合は、[MySQLが提供する権限] に基づいて外部データベースを設定します。

  • 外部データベースがPostgreSQLを実行している場合は、pg_hba.confファイルに基づいて外部データベースを設定します。

  • 外部データベースがSQL Serverを実行している場合は、[Windowsファイアウォールを構成してSQL Serverアクセスを許可する] に基づいて外部データベースを構成します。

  • 外部データベースがRedisを実行している場合は、ファイアウォールを使用して、EIPがアクセスできるポートを指定します。 たとえば、CentOSにiptablesをインストールし、次のコマンドを実行できます。

    iptables -A INPUT -s <EIP that is assoicated with the Internet NAT gateway> -p tcp --dport <Redis port number> -j ACCEPT

RDSインスタンスの設定

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

  2. エクステンションを作成します。

    説明

    この例では、MySQLを実行する外部データベース用にmysql_fdw拡張子が作成されます。

    CREATE EXTENSION mysql_fdw;
  3. 外部データベースのサーバー定義を作成します。

    CREATE SERVER <Server name>
    FOREIGN DATA WRAPPER mysql_fdw OPTIONS (
      host '<Public IP address of the external database>',
      port '<Port number of the external database>'
    );

    この例では、外部データベースはMySQLを実行し、次のステートメントを実行する必要があります。

    CREATE SERVER mysql_server80
    FOREIGN DATA WRAPPER mysql_fdw OPTIONS (
      host 'XX.XX.XX.XX',
      port '3306'
    );
  4. ユーザーマッピングを作成して、MySQLサーバー定義をRDSインスタンスのユーザーにマッピングします。 次に、ユーザーを使用して外部MySQLデータベースにアクセスします。

    CREATE USER MAPPING
    FOR <Username of your RDS instance> SERVER <Name of the created server> OPTIONS (
      username '<Username of the external database>',
      password '<Password of the external database>'
    );

    例:

    CREATE USER MAPPING
    FOR pg_client SERVER mysql_server80  OPTIONS (
      username 'testuser',
      password 'U123456!'
    );
  5. 外部テーブルを作成します。

    CREATE FOREIGN TABLE <Name of the foreign table> (
      id int,
      name varchar(10)
    )
    SERVER <Name of the created server> OPTIONS (
      dbname '<Name of the external database>',
      table_name '<Name of the table in the external database>'
    );

    例:

    CREATE FOREIGN TABLE mysql_fdw_test (
      id int,
      name varchar(10)
    )
    SERVER mysql_server80 OPTIONS (
      dbname 'testdb',
      table_name 'test'
    );
  6. 接続をテストします。

    上記の設定を完了すると、RDSインスタンスは外部データベースのテーブルにアクセスできます。

    この例では、mysql_fdw_testという名前の外部テーブルが作成されます。 RDSインスタンスから外部テーブルを直接クエリして、外部データベースのデータを取得できます。

    SELECT * FROM mysql_fdw_test;