🔰

AWS初心者向け~ゼロからECSアプリケーションの構築まで~ RDS編

2025/03/13に公開

4. RDS編

目次
  1. RDSとは
  2. RDS用サブネットグループの作成
  3. RDSアクセス用のEC2インスタンスの立ち上げ
  4. RDSクラスターの作成
  5. RDS用セキュリティグループの作成
  6. EC2インスタンスからのpsqlコマンドでのRDSインスタンスへのアクセス

1.RDSとは

RDSは、データベースのプロビジョニング、パッチ適用、バックアップ、リカバリ、スケーリングなどの管理タスクを自動化します。これにより、運用負荷が軽減されます。

  1. 高可用性と耐障害性:
    RDSは、マルチAZ(アベイラビリティゾーン)デプロイメントをサポートしており、プライマリインスタンスとスタンバイインスタンスを異なるAZに配置することで、高可用性と耐障害性を提供します。
  2. 自動バックアップとスナップショット:
    RDSは、自動バックアップ機能を提供し、指定された保持期間にわたってデータベースのバックアップを自動的に作成します。また、手動でスナップショットを作成することもできます。
  3. スケーラビリティ:
    RDSは、必要に応じてインスタンスのサイズをスケールアップまたはスケールダウンすることができます。また、リードレプリカを使用して読み取りスケーラビリティを向上させることもできます。
  4. セキュリティ:
    RDSは、データの暗号化(静止データと転送中のデータの両方)をサポートし、VPC内でのデプロイメントによりネットワークレベルのセキュリティを提供します。また、IAMを使用してアクセス制御を行うことができます。
  5. モニタリングとアラート:
    Amazon CloudWatchを使用して、RDSインスタンスのパフォーマンスメトリクスを監視し、アラームを設定することができます。これにより、パフォーマンスの問題を早期に検出し、対応することができます。
  6. コスト効率:
    RDSは、オンデマンド料金とリザーブドインスタンス料金のオプションを提供し、コスト効率の高いデータベース運用を実現します。リザーブドインスタンスを使用することで、長期的なコストを削減できます。
  7. 複数のデータベースエンジンのサポート:
    RDSは、以下の主要なリレーショナルデータベースエンジンをサポートしています:
    Amazon Aurora (MySQL互換およびPostgreSQL互換)
    MySQL
    PostgreSQL
    MariaDB
    Oracle Database
    Microsoft SQL Server

2.RDS用サブネットグループの作成

RDSクラスターを作成する前にRDSインスタンス(リーダーとライター)が配置されるサブネットのグループを作成する。ここでは、以前に作成したPrivateSubnet2つを指定する。

サブネットグループが利用できるのはRDSやElastiCacheなどの一部のサービスで、
主な目的としては、以下のようなものです。

  • 高可用性を確保するために、複数のアベイラビリティゾーンにまたがるサブネットを含めることが推奨されます。
  • ネットワーク分離を実現し、セキュリティを強化するために使用されます。

3. RDSアクセス用のEC2インスタンスの立ち上げ

後述の手順で作成したRDSにアクセスするためにEC2インスタンスを利用します。
まずEC2インスタンスを作成します。


キーペアが未作成の場合は、新規で作成し無くさないようにローカルでしっかりと保存する。

上記設定でEC2インスタンスを作成します。
RDSクラスター作成後にEC2インスタンスのネットワークアクションから「RDSデータベースを接続」アクション実施することで必要なセキュリティグループ設定を作成してくれるので、
RDSクラスター作成後に実行してみたいと思います。

Session ManagerでEC2インスタンスにアクセスするための手順

通常ローカルPCからEC2インスタンスにアクセスする場合は、パブリックIPが必要です。
プライベートサブネットにEC2インスタンスを配置する場合は、NATゲートウェイがあるなら
パブリックIPが適用できますが、今回はNATゲートウェイがなくても接続できるよう
セッションマネージャーでアクセスできる設定を提供したいと思います。

  1. EC2がセッションマネージャークライアントを利用するためのIAMロールの作成...IAMロールで「AmazonSSMManagedInstanceCore」ポリシーをアタッチしたIAMロールを作成します。

  2. EC2インスタンスのIAMロールに作成したIAMロールをアタッチします。

  3. SystemsMangerエンドポイントにアクセスできるようvpcエンドポイントを作成します。

  4. EC2の接続タブからセッションマネージャーで接続するか、直接検索でセッションマネージャーと検索して接続に使いたいEC2インスタンスを指定して接続します。

4. RDSクラスターの作成

  1. RDSから「データベースの作成」をクリックする。
  2. エンジンタイプを選択する。ここではAurora PostgreSQLを選択する。
  3. 画像のように設定値を選びます。
  4. パスワードは、実際の開発ではSecrets Mangerに持たせた方が良いですが、ここでは初心者向けのマネジメントコンソールでの操作中心なのでパスワードは個人で保持するようにします。パスワードはランダム生成のものにします。
  5. クラスターストレージやインスタンスタイプは最も料金が安くなるように設定します。
  6. ネットワーク設定で先ほど作成したEC2にアクセスするように設定する。
  7. サブネットグループは、前の手順で作成したサブネットグループを設定する。
  8. ポートはデフォルトの5432のままにする
  9. 追加の設定は、デフォルトのままにする。
  10. 最終的なコストがこちらに表示されます。こちらは月間でフル稼働した場合のコストなので起動しない間は停止させることで不要なコストをなくす事ができます。(コンソールによる停止は、一週間しか継続しないのでEventbridge SchedulerでこのRDSクラスターを恒久的に停止させます)
  11. 作成したRDSインスタンスのネットワーク設定を確認します。
  12. 自動作成されたセキュリティグループを見ると、ec2-rdsの方がアウトバウンドルールでRDSへのPort:5432での通信を、rds-ec2の方がインバウンドルールでのec2のsgを指定していることが分かります。これによりEC2インスタンスから作成したRDSインスタンスへのアクセスが可能になっているはずです
  13. EC2インスタンスのアクション>接続>セッションマネージャーから EC2インスタンスにアクセスする。
  14. psqlコマンドをインストールする。コマンドは
sudo dnf install postgresql15
  1. インストール完了後 RDS作成時に記載されたエンドポイント名、ユーザー名でpostgreにログインする。
psql --host=endpoint --port=5432 --dbname=postgres --username=postgres
  1. ログインできたらpostgres=>の表記に変わります。
  2. データベースを1つ作ってみます。
CREATE DATABASE mydatabase;
  1. CREATE DATABASEできたら問題ないです。ここまででRDSでPostgreSQL DBを作成する手順は完了です。

Discussion