チュートリアル: Amazon RDS データベースに Amazon EC2 インスタンスを接続する
チュートリアルの目的
このチュートリアルでは、AWS Management Console を使用して、Amazon EC2 インスタンスと Amazon RDS データベース間のセキュア接続を設定する方法について説明します。
接続を設定する方法は複数あります。このチュートリアルでは、以下の 3 つのオプションについて説明します。
-
オプション 1: EC2 コンソールを使用してインスタンスを RDS データベースに自動的に接続する
EC2 コンソールの自動接続機能を使用して、EC2 インスタンスと RDS データベース間のトラフィックを許可するように EC2 インスタンスと RDS データベース間の接続を自動的に設定します。
-
オプション 2: RDS コンソールを使用して、インスタンスを RDS データベースに自動的に接続する
RDS コンソールの自動接続機能を使用して、EC2 インスタンスと RDS データベース間のトラフィックを許可するように EC2 インスタンスと RDS データベース間の接続を自動的に設定します。
-
オプション 3: セキュリティグループを作成して、インスタンスを RDS データベースに手動で接続する
EC2 インスタンスと RDS データベース間の接続を設定するには、セキュリティグループを手動で設定してから、セキュリティグループを割り当てて、オプション 1 とオプション 2 の自動接続機能が自動作成する設定を再現します。
Context
EC2 インスタンスと RDS データベース間の接続を設定する理由の背景として、次のシナリオを考えてみましょう。ウェブサイトでユーザーに入力してもらうフォームがある場合、フォームデータをデータベースに取り込む必要があります。ウェブサーバーとして設定された EC2 インスタンスでウェブサイトをホストし、フォームデータを RDS データベースに取得できます。フォームデータを EC2 インスタンスから RDS データベースに送信するには、EC2 インスタンスと RDS データベースを相互接続する必要があります。このチュートリアルでは、その接続を構成する方法について説明します。なお、これは EC2 インスタンスと RDS データベースを接続するユースケースの一例にすぎません。
アーキテクチャ
次の図は、作成されるリソースと、このチュートリアルのすべてのステップを完了した結果のアーキテクチャ構成を示しています。
図は、作成する以下のリソースを示しています。
-
同じ AWS リージョン、VPC、およびアベイラビリティーゾーンに EC2 インスタンスと RDS データベースを作成します。
-
パブリックサブネットに EC2 インスタンスを作成します。
-
プライベートサブネットに RDS データベースを作成します。
RDS コンソールを使用して RDS データベースを作成し、EC2 インスタンスに自動接続すると、VPC、DB サブネットグループ、およびデータベースのパブリックアクセス設定が自動的に選択されます。RDS データベースは、EC2 インスタンスと同じ VPC 内のプライベートサブネットに自動的に作成されます。
-
インターネットユーザーは、SSH または HTTP/HTTPS を使用して、インターネットゲートウェイ経由で EC2 インスタンスに接続できます。
-
インターネットユーザーは RDS データベースに直接接続することはできません。EC2 インスタンスのみが RDS データベースに接続します。
-
自動接続機能を使用して EC2 インスタンスと RDS データベース間のトラフィックを許可すると、次のセキュリティグループが自動的に作成および追加されます。
-
セキュリティグループ ec2-rds-
x
が作成され、EC2 インスタンスに追加されます。ここには、rds-ec2-x
セキュリティグループを送信先として参照するアウトバウンドルールが 1 つ存在します。このルールにより、EC2 インスタンスからのトラフィックが rds-ec2-x
セキュリティグループのある RDS データベースに到達できるようになります。 -
セキュリティグループ rds-ec2-
x
が作成され、RDS データベースに追加されます。ec2-rds-x
セキュリティグループを送信元として参照するインバウンドルールが 1 つ存在します。このルールにより、ec2-rds-x
セキュリティグループを持つ EC2 インスタンスからのトラフィックが RDS データベースに到達できるようになります。
個別のセキュリティグループ (EC2 インスタンス用と RDS データベース用にそれぞれ 1 つずつ) を使用することで、インスタンスとデータベースのセキュリティをより適切に管理できます。インスタンスとデータベースの両方で同じセキュリティグループを使用し、例えばデータベースのみと合うようにセキュリティグループを変更した場合、その変更はインスタンスとデータベースの両方に影響します。言い換えると、1 つのセキュリティグループを使用した場合、セキュリティグループがアタッチされていることを忘れてしまい、リソース (インスタンスまたはデータベース) のセキュリティを意図せず変更してしまう可能性があることになります。
また、自動的に作成されるセキュリティグループは最小特権に従っており、ワークロード固有のセキュリティグループペアを作成することで、データベースポート上のこのワークロードに対する相互接続のみを許可します。
-
考慮事項
このチュートリアルのステップを実行する際には、次の点を考慮してください。
-
2 つのコンソール — このチュートリアルでは、次の 2 つのコンソールを使用します。
-
Amazon EC2 コンソール — EC2 コンソールを使用してインスタンスを起動したり、EC2 インスタンスを RDS データベースに自動接続したり、手動オプションのときにはセキュリティグループを作成して接続を設定します。
-
Amazon RDS コンソール — RDS コンソールを使用して RDS データベースを作成したり、EC2 インスタンスを RDS データベースに自動接続します。
-
-
1 つの VPC — 自動接続機能を使用するには、EC2 インスタンスと RDS データベースが同じ VPC 内にある必要があります。
EC2 インスタンスと RDS データベース間の接続を手動で設定する場合、VPC で EC2 インスタンスを起動して、別の VPC で RDS データベースを起動することができますが、追加のルーティングと VPC 設定を設定する必要があります。このシナリオについては、このチュートリアルでは説明しません。
-
1 つの AWS リージョン — EC2 インスタンスと RDS データベースは同じリージョンにある必要があります。
-
2 つのセキュリティグループ — EC2 インスタンスと RDS データベース間の接続は、EC2 インスタンスのセキュリティグループと RDS データベースのセキュリティグループという 2 つのセキュリティグループが設定します。
EC2 コンソールまたは RDS コンソールの自動接続機能を使用して接続を設定する場合 (このチュートリアルのオプション 1 とオプション 2)、セキュリティグループは自動的に作成され、EC2 インスタンスと RDS データベースに割り当てられます。
自動接続機能を使用しない場合、セキュリティグループを手動で作成して割り当てる必要があります。これは、このチュートリアルのオプション 3 で行います。
チュートリアル完了までの時間
30 分
チュートリアルの全過程を 1 回で完了することも、1 つのタスクずつに分けて完了することもできます。
コスト
このチュートリアルを完了すると、作成する AWS リソースのコストが発生する可能性があります。
AWS アカウントの使用開始から 12 か月未満で、無料利用枠の要件に従ってリソースを設定している場合は、Amazon EC2 の無料利用枠
EC2 インスタンスと RDS データベースが異なるアベイラビリティーゾーンにある場合は、データ転送料金が発生します。これらの料金の発生を回避するには、EC2 インスタンスと RDS データベースが同じアベイラビリティーゾーンにある必要があります。データ転送料金の詳細については、「Amazon EC2 オンデマンド料金」ページの「データ転送
チュートリアル完了後にコストが発生するのを避けるため、不要になったリソースは必ず削除してください。リソースを削除するステップについては、「タスク 4 (オプション): クリーンアップする」を参照してください。