メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

VPC の DB インスタンスにアクセスするシナリオ

Amazon RDS は、VPC の DB インスタンスにアクセスするための以下のシナリオをサポートします。

VPC 内の DB インスタンスに同じ VPC 内の EC2 インスタンスがアクセスする

VPC 内の RDS インスタンスの一般的な用途は、同じ VPC 内の EC2 インスタンスで実行されるアプリケーションサーバーとデータを共有することです。これは、AWS Elastic Beanstalk を使用して同じ VPC 内で EC2 インスタンスおよび DB インスタンスを作成する場合に作成されたユーザーシナリオです。

以下の図に、このシナリオを示しています。

 VPC と EC2 のセキュリティグループのシナリオ

同じ VPC 内の EC2 インスタンスと DB インスタンス間のアクセスを管理する方法として最も簡単なのは、次の方法です。

  • DB インスタンスが存在する VPC セキュリティグループを作成します。このセキュリティグループは、DB インスタンスへのアクセスを制限するのに使用できます。たとえば、DB インスタンスを作成したときに割り当てたポートと、開発またはそのほかの目的で DB インスタンスにアクセスするのに使用する IP アドレスを使用して TCP へのアクセスを許可する、セキュリティグループのカスタムルールを作成できます。

  • EC2 インスタンス (ウェブサーバーとクライアント) が属する VPC セキュリティグループを作成します。このセキュリティグループは、必要に応じて VPC のルーティングテーブルを介してインターネットから EC2 インスタンスへのアクセスを許可できます。たとえば、ポート 22 経由で EC2 インスタンスへの TCP アクセスを許可するルールをこのセキュリティグループに設定できます。

  • EC2 インスタンス用に作成したセキュリティグループからの接続を許可する DB インスタンスのセキュリティグループで、カスタムルールを作成します。これは、セキュリティグループのメンバーに DB インスタンスへのアクセスを許可します。

このシナリオのパブリックとプライベートの両方のサブネットを使用する VPC を作成する方法のチュートリアルについては、「チュートリアル: Amazon RDS DB インスタンスで使用する Amazon VPC の作成」を参照してください。

他のセキュリティグループからの接続を許可する VPC セキュリティグループにルールを作成するには、以下を実行します。

  1. AWS マネジメントコンソール にサインインした後、Amazon VPC コンソール (https://console.aws.amazon.com/vpc) を開きます。

  2. ナビゲーションペインで、[Security Groups] を選択します。

  3. 他のセキュリティグループのメンバーからのアクセスを許可するセキュリティグループを、選択または作成します。上記のシナリオでは、これは DB インスタンスで使用するセキュリティグループです。[Add Rule] を選択します。

  4. [Type] で [All ICMP] を選択します。[Source] ボックスにセキュリティグループの ID を入力します。これにより、セキュリティグループのリストが作成されます。 このセキュリティグループによって保護されているリソースへのアクセスを許可するメンバーが、所属しているセキュリティグループを選択します。上記のシナリオでは、これは EC2 インスタンスで使用するセキュリティグループです。

  5. [All TCP] を [Type] と [Source] ボックスのセキュリティグループとして使用してルールを作成し、TCP プロトコルのステップを繰り返します。 UDP プロトコルを使用する場合は、[All UDP] を [Type] と [Source] ボックスのセキュリティグループとして使用してルールを作成します。

  6. MySQL 用のポート 3306 のような DB インスタンスを作成したときに使用したポートを経由したアクセスを許可する、カスタム TCP のルールを作成します。[Source] ボックスに使用するセキュリティグループまたは IP アドレスを入力します。

  7. 完了したら、[Save] を選択します。

 他のセキュリティグループのルールにセキュリティグループを追加する

VPC 内の DB インスタンスに別の VPC 内の EC2 インスタンスがアクセスする

DB インスタンスがアクセスに使用している EC2 インスタンスとは異なる VPC にある場合、その DB インスタンスにアクセスする方法はいくつかあります。DB インスタンスと EC2 インスタンスが別の VPC にあっても同じリージョンにある場合は、VPC ピア接続を使用できます。DB インスタンスと EC2 インスタンスが異なるリージョンにある場合は、アクセスしている DB インスタンスのパブリック IP を使用する必要があります。

以下の図に、このシナリオを示しています。

 VPC 内の DB インスタンスに別の VPC 内の EC2 インスタンスがアクセスする

VPC ピア接続は、プライベート IP アドレスを使用して 2 つの VPC 間でトラフィックをルーティングすることを可能にするネットワーク接続です。どちらの VPC のインスタンスも、同じネットワーク内に存在しているかのように、相互に通信できます。VPC ピア接続は、自分の VPC 間、または、1 つのリージョン内の他の AWS アカウントにある VPC との間に作成できます。VPC ピア接続の詳細については、『VPC ドキュメント』を参照してください。

EC2 インスタンスとは別の VPC とリージョンにある DB インスタンスに接続する必要がある場合は、DB インスタンスのパブリック IP を使用します。DB インスタンスは、パブリックアクセスが許可されており、パブリックサブネット内にある必要があります。またサブネットにはインターネットゲートウェイが必要です。DB インスタンスの作成時に [VPC] オプションを [Create new VPC] に、[Publicly Accessible] オプションを [Yes] に設定すると、Amazon RDS では、DB インスタンスのパブリックサブネットは自動的に作成されます。

ClassicLink を使用することによって、VPC 内の Amazon RDS DB インスタンスと Amazon VPC 外の EC2 インスタンスの間で通信できます。Classic Link を使用すると、EC2 インスタンスのアプリケーションは、DB インスタンスの RDS エンドポイントを使用することによって、DB インスタンスに接続できます。ClassicLink は無料で利用できます。

以下の図に、このシナリオを示しています。

 VPC 内の DB インスタンスに VPC 外の EC2 インスタンスがアクセスする

この ClassicLink を使用すると、IP アドレス範囲を定義し、アクセスコントロールリスト (ACL) を用いてネットワークトラフィックを管理できる、論理的に分離されたデータベースに EC2 インスタンスを接続できます。VPC 内の DB インスタンスと通信するために、パブリック IP アドレスやトンネリングを使用する必要はありません。このような配置により、インスタンス間通信に対して高スループットで低レイテンシーの接続を提供します。

注記

DB インスタンスは、パブリックに対してオープンではない (つまり、パブリックにアクセスできるように設定できない) プライベートサブネットに存在している必要があります。

VPC 内の DB インスタンスと VPC 外の EC2 インスタンスの間で ClassicLink を有効にするには

  1. AWS マネジメントコンソール にサインインした後、Amazon VPC コンソール (https://console.aws.amazon.com/vpc) を開きます。

  2. 画面左枠のナビゲーションペインで、[VPC] を選択します。

  3. [VPC] で、DB インスタンスが使用する VPC を選択します。

  4. [Actions] メニューで、[Enable ClassicLink] を選択します。確認ダイアログボックスで、[Yes, Enable] を選択します。

  5. EC2 コンソールで、VPC 内の DB インスタンスに接続する EC2 インスタンスを選択します。

  6. [Actions] メニューで、[ClassicLink] を選択し、続いて [Link to VPC] を選択します。

  7. [Link to VPC] ページで、使用するセキュリティグループを選択し、[Link to VPC] を選択します。

インターネット経由でクライアントアプリケーションが VPC 内の DB インスタンスにアクセスする

クライアントアプリケーションからインターネットを通じて VPC 内の DB インスタンスにアクセスするには、1 つのパブリックサブネットを持つ VPC と、インターネットを介した通信を有効にするためのインターネットゲートウェイを構成する必要があります。

以下の図に、このシナリオを示しています。

 インターネット経由でクライアントアプリケーションが VPC 内の DB インスタンスにアクセスする

次の構成をお勧めします。

  • サイズ /16 (たとえば CIDR: 10.0.0.0/16) の VPC。このサイズでは 65,536 個のプライベート IP アドレスが提供されます。

  • サイズ /24 (たとえば CIDR: 10.0.0.0/24) のサブネット。このサイズでは 256 個のプライベート IP アドレスが提供されます。

  • インターネットと他の AWS 製品に VPC を接続するインターネットゲートウェイ。

  • サブネット範囲のプライベート IP アドレス (例: 10.0.0.6) と Elastic IP アドレス (例: 198.51.100.2) を持つインスタンス。前者はインスタンスが VPC 内の他のインスタンスと通信できるようにし、後者はインターネットからインスタンスにアクセスできるようにします。

  • サブネットのインスタンスが VPC 内の他のインスタンスと通信できるようにするルートテーブルエントリと、サブネットのインスタンスがインターネットで直接通信できるようにするルートテーブルエントリ。

詳細については、『VPC ドキュメント」のシナリオ 1 を参照してください。

VPC 外の DB インスタンスに VPC 内の EC2 インスタンスがアクセスする

VPC 内に EC2 インスタンスがあり、RDS DB インスタンスが VPC 内にない場合は、パブリックインターネットに接続できます。

以下の図に、このシナリオを示しています。

 VPC 外の DB インスタンスに VPC 内の EC2 インスタンスがアクセスする

注記

ClassicLink は、「VPC 内の DB インスタンスに VPC 外の EC2 インスタンスがアクセスする」で説明されているように、このシナリオではご利用いただけません。

パブリックインターネット経由で DB インスタンスと EC2 インスタンスに接続するには、次のようにします。

  • EC2 インスタンスが VPC のパブリックサブネット内にあることを確認します。

  • RDS DB インスタンスがパブリックとしてマークされていることを確認します。

  • ネットワーク ACL のメモはここにあります。ネットワーク ACL はサブネット全体に対するファイアウォールに似ています。したがって、そのサブネット内のすべてのインスタンスにネットワーク ACL ルールが適用されます。デフォルトでは、特にセキュリティの追加レイヤーとしてルールを追加しない限り、ネットワーク ACL はすべてのトラフィックを許可するので、通常は心配する必要はありません。一方でセキュリティグループは個々のインスタンスに関連付けられており、セキュリティグループのルールを配慮する必要があります。

  • RDS DB インスタンスの DB セキュリティグループに、必要な進入ルールを追加します。

    進入ルールでは、ネットワークポートと CIDR/IP の範囲を指定します。たとえば、MySQL RDS DB インスタンスに接続するポート 3306 と、CIDR/IP 範囲が 203.0.113.25/32 となるルールを追加します。詳細については、「IP 範囲からのネットワークアクセスを DB セキュリティグループに許可する」を参照してください。

注記

既存の DB インスタンスを VPC に移行することに関心をお持ちの場合は、AWS マネジメントコンソール を使用して簡単に移行できます。 詳細については. 「VPC 外の DB インスタンスを VPC に移行する」を参照してください。

VPC 外の DB インスタンスに VPC 外 EC2 インスタンスがアクセスする

DB インスタンスまたは EC2 インスタンスのアプリケーションのどちらも VPC 内に存在しない場合は、エンドポイントとポートを使用して DB インスタンスにアクセスできます。

以下の図に、このシナリオを示しています。

 VPC 外の DB インスタンスに VPC 外 EC2 インスタンスがアクセスする

インスタンスの作成時に指定したポートからのアクセスを許可するインスタンスの DB セキュリティグループを作成する必要があります。たとえば、Oracle DB インスタンスにアクセスする sqlplus を使用したの接続文字列と同様の接続文字列を使用します。

Copy
PROMPT>sqlplus 'mydbusr@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<endpoint>) (PORT=<port number>))(CONNECT_DATA=(SID=<database name>)))'

詳細については、次のドキュメントを参照してください。

注記

既存の DB インスタンスを VPC に移行することに関心をお持ちの場合は、AWS マネジメントコンソール を使用して簡単に移行できます。 詳細については. 「VPC 外の DB インスタンスを VPC に移行する」を参照してください。

インターネット経由でクライアントアプリケーションが VPC 外の DB インスタンスにアクセスする

新しい Amazon RDS 顧客は、VPC 内の DB インスタンスのみを作成できます。ただし、クライアントアプリケーションからインターネットを経由して VPC 外の既存の Amazon RDS DB インスタンスに接続する必要がある可能性があります。

以下の図に、このシナリオを示しています。

 インターネット経由でクライアントアプリケーションが VPC 内に存在しない DB インスタンスにアクセスする

このシナリオでは、RDS DB インスタンスの DB セキュリティグループに、クライアントアプリケーションが接続するのに必要な進入ルールが含まれていることを確認します。進入ルールでは、ネットワークポートと CIDR/IP の範囲を指定します。たとえば、MySQL RDS DB インスタンスに接続するポート 3306 と、CIDR/IP 範囲が 203.0.113.25/32 となるルールを追加します。詳細については、「IP 範囲からのネットワークアクセスを DB セキュリティグループに許可する」を参照してください。

警告

ファイアウォールの内側にある DB インスタンスにアクセスする場合は、ネットワーク管理者と相談して、使用する IP アドレスを決定してください。

注記

既存の DB インスタンスを VPC に移行することに関心をお持ちの場合は、AWS マネジメントコンソール を使用して簡単に移行できます。 詳細については. 「VPC 外の DB インスタンスを VPC に移行する」を参照してください。