【AWSサービス 基礎編】Amazon RDS でデータベースを作成し EC2 から接続する

目次

概要

Web アプリケーションの多くは、会員情報や注文履歴などのデータをリレーショナルデータベース(RDB)に保存します。EC2 インスタンスに MySQL や PostgreSQL を自分でインストールして運用することもできますが、その場合は OS やデータベースソフトウェアのパッチ適用、バックアップ、障害時の復旧まで、すべて自分で面倒を見る必要があります。

Amazon RDS(Relational Database Service)は、こうした管理作業の多くを AWS が引き受けるマネージド型のリレーショナルデータベースサービスです。MySQL・PostgreSQL・MariaDB・Oracle・SQL Server・Db2 のエンジンから選んで、数分でデータベースを用意できます。

この記事では、RDS の基本概念(マネージド DB の責任範囲、マルチ AZ 配置とリードレプリカ、バックアップ、DB サブネットグループ、セキュリティグループ)と Amazon Aurora との違いを押さえたうえで、プライベートサブネットに MySQL の DB インスタンスを作成し、パブリックサブネットの Web サーバー(EC2)から接続して SQL を実行するまでを体験します。

クラウドおさる

今日は、外からは届かない奥の部屋にデータベースを置いて、Web サーバーからだけ話しかけられるようにするのでござる。猿山でいえば、長老会の帳簿蔵は山の奥にあって、見張り番の猿を通さないと近づけない、あの形でござるな。

Web サーバーはパブリック、DB はプライベート。DB には EC2 の SG からの 3306 だけを通す
Web サーバーはパブリック、DB はプライベート。DB には EC2 の SG からの 3306 だけを通す

この記事のメリット

  • マネージドデータベースで AWS が肩代わりしてくれる作業と、利用者に残る作業を区別できる
  • RDS で選べる DB エンジンと DB インスタンスクラスの考え方を把握できる
  • マルチ AZ 配置とリードレプリカの違い(可用性のためか、読み取り性能のためか)を説明できる
  • 自動バックアップと手動スナップショットの違いを理解できる
  • DB サブネットグループとセキュリティグループを使って、DB を外部から隔離する構成を作れるようになる
  • Amazon Aurora と RDS の違い(ストレージの仕組み、Aurora Serverless)を把握できる

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。

クラウドおさる

基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

マネージドデータベースで AWS が肩代わりすること

クラウドおさる

とひさん、データベースなら EC2 に MySQL を入れれば動くでござるよね。わざわざ RDS を使うのはなぜでござるか?

土肥

もちろん EC2 に入れても動くよ。ただその場合、OS のパッチ当て、データベースソフトウェアの更新、バックアップ、壊れたときの復旧まで、ぜんぶ自分の仕事になるんだ。RDS はそういう「データベースを動かし続けるための作業」の多くを AWS が引き受けてくれるサービスなんだよ。

クラウドおさる

具体的には、どこまでやってくれるのでござる?

土肥

まとめるとこんな感じだね。

担当主な作業
AWS(RDS)サーバーのハードウェア保守、OS のインストールとパッチ適用、DB ソフトウェアのパッチ適用、自動バックアップ、障害の自動検出と復旧、マルチ AZ 配置時のフェイルオーバー
利用者データベースの設計、SQL(クエリ)のチューニング、アプリケーションの最適化、アクセス制御(セキュリティグループ・ユーザー権限)の設定
土肥

使う側から見ると、DB インスタンスごとに用意されるエンドポイント(接続先のホスト名)を指定して、普段と同じ MySQL クライアントやアプリケーションから接続するだけなんだ。

クラウドおさる

なるほど、蔵の修繕や鍵の交換は AWS にお任せして、弊猿たちは帳簿の中身を考えることに集中できるのでござるな!

土肥

そうそう、その通り! ただ、帳簿をどう整理するか、誰に蔵の鍵を渡すかは利用者の仕事として残る、というところも覚えておいてね。

DB エンジンと DB インスタンスクラス

クラウドおさる

RDS ではどんなデータベースが使えるのでござるか?

土肥

RDS で選べるエンジンは 6 種類だよ。

エンジン特徴
MySQLオープンソース
PostgreSQLオープンソース
MariaDBオープンソース
Oracle Database商用エンジン
Microsoft SQL Server商用エンジン
IBM Db2商用エンジン
土肥

「データベースそのもの」が動く環境のことを DB インスタンスと呼ぶんだ。1 つの DB インスタンスの中に、データベースを 1 つ以上作れるよ。

クラウドおさる

EC2 のインスタンスタイプのように、大きさも選ぶのでござるか?

土肥

いいところに気づいたね! それが DB インスタンスクラスだよ。CPU とメモリの量が決まっていて、db. で始まる名前になっているんだ。

種類名前の例向いている用途
汎用db.m*バランスの取れた一般的なワークロード
メモリ最適化db.r*、db.x*、db.z*メモリを多く使う大きなデータベース
コンピューティング最適化db.c*CPU 負荷の高いワークロード
バースト可能パフォーマンスdb.t*開発・検証や負荷の小さいワークロード
クラウドおさる

今日のハンズオンのような小さな検証なら、バースト可能な db.t* の小さいサイズで十分でござるな。

マルチ AZ 配置とリードレプリカ

クラウドおさる

データベースが 1 台だけだと、壊れたときが心配でござる……。

土肥

そのための仕組みが 2 つあるんだけど、目的が違うから混同しないようにしようね。まずはマルチ AZ 配置。プライマリの DB インスタンスとは別の AZ にスタンバイを置いて、データを同期的に複製しておくんだ。プライマリや AZ に障害が起きたら、スタンバイに自動でフェイルオーバーするよ。

クラウドおさる

予備の帳簿蔵を別の山に建てておいて、毎回同時に書き込むのでござるな! では、普段はスタンバイの蔵からも帳簿を読めるのでござる?

土肥

そこがひっかけポイントなんだ。マルチ AZ の DB インスタンス配置では、スタンバイは読み取りのトラフィックを処理しないんだよ。あくまで「落ちないため」の仕組みで、「読み取りを速くする」ための仕組みじゃないんだ。読み取りを分散したいときに使うのがリードレプリカだよ。

土肥

リードレプリカは DB インスタンスの読み取り専用コピーで、プライマリへの更新が非同期でコピーされるんだ。参照系のクエリをリードレプリカに向ければ、プライマリの負荷を減らせるよ。別のリージョンに作ることもできるんだ。

項目マルチ AZ 配置(DB インスタンス)リードレプリカ
主な目的可用性(障害時の自動フェイルオーバー)読み取り性能の向上(読み取り負荷の分散)
レプリケーション同期非同期
コピー側で読み取りできない(スタンバイは読み取りを処理しない)できる(読み取り専用)
配置できる場所同じリージョンの別の AZ同じリージョン、または別のリージョン
マルチ AZ 配置は「止まらない」ため、リードレプリカは「読み込みを分ける」ため
マルチ AZ 配置は「止まらない」ため、リードレプリカは「読み込みを分ける」ため
クラウドおさる

マルチ AZ にすると、同じ構成のスタンバイインスタンスがもう 1 台できるので、その分の料金がかかるのでござる。本番では心強い仕組みでござるが、練習で試すときはバナナの減り方に気をつけるのでござるぞ。

土肥

そうだね。ちなみにスタンバイを 2 つ持ち、読み取りも処理できる「マルチ AZ DB クラスター」という配置もあるけど、今回は名前だけ覚えておけば大丈夫だよ。

自動バックアップとスナップショット

クラウドおさる

バックアップも AWS がやってくれると言っていたでござるが、どういう仕組みでござるか?

土肥

RDS には自動バックアップと手動スナップショットの 2 種類があるよ。自動バックアップは、毎日のバックアップウィンドウの間にストレージボリューム全体のスナップショットを取っておいてくれるもの。保持期間の範囲内なら、好きな時点に戻せる「ポイントインタイムリカバリ」ができるんだ。

クラウドおさる

保持期間は、どれくらいに決められるのでござる?

土肥

DB インスタンスなら 0〜35 日の範囲で決められて、コンソールで作るとデフォルトは 7 日だよ。0 にすると自動バックアップが無効になるんだ。一方、手動スナップショットは自分で好きなタイミングで取るもので、保持期間の影響を受けず、自分で消すまで残り続けるよ。

項目自動バックアップ手動スナップショット
取得タイミングバックアップウィンドウ中に自動で取得利用者が任意のタイミングで取得
保持期間0〜35 日で指定(0 で無効)期限切れにならない。明示的に削除するまで残る
復元できる時点保持期間内の任意の時点(ポイントインタイムリカバリ)スナップショットを取った時点
DB インスタンス削除時保持しない設定にすると一緒に削除される削除されずに残る
クラウドおさる

自動バックアップは毎日の帳簿の写しで、古いものから処分されていく。手動スナップショットは「この日の帳簿は長老会の記念に取っておく」という特別な写しでござるな!

土肥

うまい例えだね! 大事な変更の前に手動スナップショットを取っておく、という使い方がよくされるよ。

DB サブネットグループとパブリックアクセス

クラウドおさる

DB インスタンスは、VPC のどこに置かれるのでござるか?

土肥

RDS では、DB を置いてよいサブネットのセットを「DB サブネットグループ」として先に用意するんだ。ここで大事なのは、DB サブネットグループには少なくとも 2 つの AZ のサブネットが必要、ということ。シングル AZ で使うときでも、このルールは同じなんだよ。

クラウドおさる

1 台しか置かないのに、2 つの AZ が要るのでござるか?

土肥

そう、DB サブネットグループを作るときのルールとして決まっているんだ。だから今回の VPC にも、DB 用のプライベートサブネットを 2 つの AZ に 1 つずつ用意してあるよ。それから「パブリックアクセス」という設定もあるよ。「はい」にすると DB インスタンスにパブリック IP アドレスも付くんだけど、Web サーバーからだけ使う DB なら「なし」にして、プライベートサブネットに置くのが基本だよ。

クラウドおさる

帳簿蔵は山の奥(プライベートサブネット)に建てて、表の道(インターネット)には入口を作らない、ということでござるな。

土肥

その通り! ちなみに VPC の中から DB のエンドポイントを名前解決すると、DB のプライベート IP アドレスが返ってくるよ。実践で確かめてみよう。

セキュリティグループで EC2 からだけ許可する

クラウドおさる

プライベートサブネットに置けば、それだけで安全なのでござるか?

土肥

もう一段あるよ。DB インスタンスにもセキュリティグループを付けて、どこからの通信を受け付けるかを決めるんだ。ここでのポイントは、ソースに IP アドレスではなく「EC2 インスタンスのセキュリティグループ」を指定できること。

クラウドおさる

IP アドレスではなく、セキュリティグループを指定するとどうなるのでござる?

土肥

「このセキュリティグループが付いているインスタンスからの通信だけを許可する」という意味になるんだ。Web サーバーが増えたり IP アドレスが変わったりしても、同じセキュリティグループを付けておけばルールを書き直さなくていいんだよ。今回は次の 2 つを用意するね。

セキュリティグループ付ける先インバウンドルール
rds-web-sgWeb サーバー(EC2)なし(Session Manager で接続するため)
rds-db-sgDB インスタンスタイプ MYSQL/Aurora(TCP 3306)、ソース rds-web-sg
DB の SG は「IP アドレス」ではなく「EC2 の SG」を許可する
DB の SG は「IP アドレス」ではなく「EC2 の SG」を許可する
クラウドおさる

「見張り番の腕章を付けた猿だけ蔵に入ってよい」という決まりにしておけば、見張り番が交代しても決まりを書き直さなくてよいのでござるな!

土肥

そういうこと! セキュリティグループの基本は セキュリティグループとネットワーク ACL でアクセスを制御する の記事でも詳しく扱っているよ。

Amazon Aurora との違い

クラウドおさる

RDS のコンソールを見ると、Aurora というものもあるでござる。RDS と何が違うのでござるか?

土肥

Aurora は MySQL・PostgreSQL と互換性のあるフルマネージドのリレーショナルデータベースエンジンで、RDS と同じコンソールから作れるんだ。同等のハードウェアで、標準の MySQL や PostgreSQL の最大 6 倍のスループットが出るとされているよ。一番大きな違いはストレージの仕組みだね。

土肥

RDS の DB インスタンスはそれぞれ自分のストレージを持つけど、Aurora は「クラスターボリューム」という共有のストレージを使うんだ。データは 1 つのリージョンの 3 つの AZ にコピーされていて、データ量に合わせて自動で拡張されるよ。読み取り用の Aurora レプリカは最大 15 個まで作れて、プライマリと同じクラスターボリュームにつながるんだ。

項目RDS(MySQL / PostgreSQL など)Amazon Aurora
エンジン6 種類から選択MySQL 互換 / PostgreSQL 互換
ストレージDB インスタンスごとにストレージを割り当てるクラスターボリューム(3 AZ にコピー、データ量に応じて自動拡張)
読み取りの分散リードレプリカ(非同期でコピー)Aurora レプリカ(最大 15 個。同じクラスターボリュームを共有)
構成単位DB インスタンスDB クラスター(ライター 1 台 + リーダー + クラスターボリューム)
クラウドおさる

Aurora Serverless というのも聞いたことがあるでござる。サーバーがないのでござるか?

土肥

サーバーを意識しなくていい、という意味だね。Aurora Serverless v2 は、ACU(Aurora キャパシティーユニット)という単位で、負荷に合わせて容量を自動で増減してくれるんだ。使っていないときにゼロまで縮めて一時停止する設定もあるよ。負荷の変動が大きいアプリケーションや、トラフィックが予測しにくいアプリケーションに向いているね。

クラウドおさる

収穫期だけ大勢の猿が蔵に押し寄せる猿山には、ぴったりでござるな!

土肥

ははは、まさにそういうイメージ! 今回は基本を押さえるために、RDS for MySQL の小さな DB インスタンスで実際に手を動かしてみよう。

新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

実践

ハンズオンガイド6 ステップ画面 6 枚

コンソールの横に開いて、チェックしながら進めましょう。

ガイドを開く

別タブで開きます。チェックはこのブラウザに保存されます。

プライベートサブネットに RDS for MySQL の DB インスタンス(シングル AZ、パブリックアクセスなし)を作成し、パブリックサブネットの Web サーバー(EC2)から mysql クライアントで接続して SQL を実行します。DB 用のセキュリティグループと DB サブネットグループも手順の中で作成します。

前提条件

  • リージョン: ap-northeast-1(東京)
  • AWS マネジメントコンソールにログイン済みで、IAM ユーザーまたはロールに RDS・EC2・Systems Manager の操作権限があること
  • 以下のリソースが作成済みであること
リソース種別リソース名内容
VPCrds-vpcCIDR 10.0.0.0/16
パブリックサブネットrds-public-subnet-1a / rds-public-subnet-1c10.0.1.0/24(ap-northeast-1a)/ 10.0.2.0/24(ap-northeast-1c)。インターネットゲートウェイへのルートあり
プライベートサブネットrds-private-subnet-1a / rds-private-subnet-1c10.0.11.0/24(ap-northeast-1a)/ 10.0.12.0/24(ap-northeast-1c)。インターネットへのルートなし
セキュリティグループrds-web-sgWeb サーバー用。インバウンドルールなし
EC2 インスタンスrds-web-serverAmazon Linux 2023。rds-public-subnet-1a に配置し、rds-web-sg を付与。mysql クライアント(mariadb105)をインストール済み。AmazonSSMManagedInstanceCore を含むインスタンスプロファイルが付与され、Session Manager で接続できる状態

VPC とサブネットの考え方は Amazon VPC で仮想ネットワークを構築しサブネットを設定する、EC2 の基本は Amazon EC2 でインスタンスを起動しSSH接続する を参照してください。

作成するリソース一覧

リソース種別リソース名用途
セキュリティグループrds-db-sgDB インスタンス用。rds-web-sg からの TCP 3306 のみ許可
DB サブネットグループrds-db-subnet-groupDB を置くプライベートサブネット 2 つ(2 AZ)のセット
RDS DB インスタンスrds-handson-dbRDS for MySQL。シングル AZ、パブリックアクセスなし

DB 用のセキュリティグループを作成する

  • AWS マネジメントコンソールにログインし、リージョンが ap-northeast-1(東京)であることを確認します
  • 上部の検索バーに EC2 と入力し、表示された「EC2」を選択します
  • 左側ナビゲーションの「ネットワーク & セキュリティ」→「セキュリティグループ」を選択します
  • 右上の「セキュリティグループを作成」をクリックします
  • 「基本的な詳細」で以下を入力します
  • セキュリティグループ名: rds-db-sg
  • 説明: Security group for rds-handson-db
  • VPC: rds-vpc
  • 「インバウンドルール」セクションで「ルールを追加」をクリックし、以下を入力します
  • タイプ: MYSQL/Aurora(プロトコル TCP、ポート範囲 3306 が自動で入ります)
  • ソース: カスタム のまま、右の検索ボックスに rds-web-sg と入力して候補から選択
  • 「アウトバウンドルール」はデフォルトのままにします
  • ページ下部の「セキュリティグループを作成」をクリックします
rds-db-sg のインバウンドルール入力画面(タイプ MYSQL/Aurora、ソースに rds-web-sg を指定した状態)
rds-db-sg のインバウンドルール入力画面(タイプ MYSQL/Aurora、ソースに rds-web-sg を指定した状態)

DB サブネットグループを作成する

  • 上部の検索バーに RDS と入力し、表示された「Aurora and RDS」を選択します
  • 左側ナビゲーションの「サブネットグループ」を選択します
  • 「DB サブネットグループを作成」をクリックします
  • 「サブネットグループの詳細」で以下を入力します
  • 名前: rds-db-subnet-group
  • 説明: Private subnets for rds-handson-db
  • VPC: rds-vpc
  • 「サブネットを追加」で以下を選択します
  • アベイラビリティーゾーン: ap-northeast-1a と ap-northeast-1c
  • サブネット: 10.0.11.0/24(rds-private-subnet-1a)と 10.0.12.0/24(rds-private-subnet-1c)
  • 「作成」をクリックします
DB サブネットグループの作成画面(2 つの AZ とプライベートサブネット 2 つを選択した状態)
DB サブネットグループの作成画面(2 つの AZ とプライベートサブネット 2 つを選択した状態)

サブネットグループの一覧に rds-db-subnet-group が表示されることを確認します。

DB インスタンスを作成する

「データベースの作成」は設定項目が多いため、ここで指定する項目以外はすべてデフォルトのままにします。

  • 左側ナビゲーションの「データベース」を選択し、「データベースの作成」をクリックします
  • 「データベース作成方法を選択」で フル設定 を選択します
  • 「エンジンのオプション」の「エンジンのタイプ」で MySQL を選択します(エンジンバージョンはデフォルトのまま)
  • 「テンプレート」で 無料利用枠 を選択します(無料利用枠 を選ぶと、次の「可用性と耐久性」がシングル AZ に、インスタンスクラスが db.t4g.micro に切り替わります)
  • 「可用性と耐久性」の「デプロイオプション」が シングル AZ DB インスタンスデプロイ (1 インスタンス)(スタンバイインスタンスを作成しない構成)になっていることを確認します
  • 「設定」で以下を入力します
  • DB インスタンス識別子: rds-handson-db
  • マスターユーザー名: admin
  • 認証情報管理: セルフマネージド
  • マスターパスワード / パスワードを確認: 任意のパスワード(8 文字以上)を入力し、控えておきます
  • 「インスタンスの設定」で、バースト可能クラス (t クラスを含む) が選択され、インスタンスタイプが db.t4g.micro になっていることを確認します
  • 「ストレージ」はデフォルトのままにします
データベースの作成画面(フル設定・MySQL・無料利用枠・シングル AZ・DB インスタンス識別子・マスターユーザー名・セルフマネージドを設定した状態)
データベースの作成画面(フル設定・MySQL・無料利用枠・シングル AZ・DB インスタンス識別子・マスターユーザー名・セルフマネージドを設定した状態)

続けて、同じ画面の「接続」セクションを以下のように設定します。DB をプライベートサブネットに置き、rds-web-sg からの通信だけを受け付けるための設定です。

  • コンピューティングリソース: EC2 コンピューティングリソースに接続しない
  • Virtual Private Cloud (VPC): rds-vpc
  • DB サブネットグループ: rds-db-subnet-group
  • パブリックアクセス: なし
  • VPC セキュリティグループ (ファイアウォール): 既存の選択 を選び、default を「×」で外して rds-db-sg を選択
  • アベイラビリティーゾーン: 指定なし(デフォルト)
データベースの作成画面の「接続」セクション(VPC・DB サブネットグループ・パブリックアクセスなし・rds-db-sg を設定した状態)
データベースの作成画面の「接続」セクション(VPC・DB サブネットグループ・パブリックアクセスなし・rds-db-sg を設定した状態)
  • 「データベース認証」の「データベース認証オプション」は パスワード認証 のままにします
  • 「追加設定」を開き、「最初のデータベース名」に handsondb と入力します(その他の項目はデフォルトのまま)
  • ページ下部の「データベースの作成」をクリックします

データベースの一覧に rds-handson-db が表示されます。作成には少し時間がかかります。ステータスが「利用可能」になるまで待ちます。

  • rds-handson-db を選択し、「接続とセキュリティ」タブを開きます
  • 「接続手順」の mysql -h に続く値が DB のエンドポイント(rds-handson-db.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com の形式)です。エンドポイントとポート 3306 を控えます
  • 「セキュリティグループのルール」に、rds-db-sg のインバウンドルール(ソースが rds-web-sg のセキュリティグループ ID)が表示されていることを確認します
rds-handson-db の「接続とセキュリティ」タブ(ステータス「利用可能」、「接続手順」のエンドポイントとポート 3306、「セキュリティグループのルール」の rds-db-sg が表示されている状態)
rds-handson-db の「接続とセキュリティ」タブ(ステータス「利用可能」、「接続手順」のエンドポイントとポート 3306、「セキュリティグループのルール」の rds-db-sg が表示されている状態)
クラウドおさる

DB インスタンスは、使っていなくても起動している間ずっとインスタンス時間の料金がかかるのでござる。一時停止しても 7 日たつと自動で起動するので、練習が終わったら消しておくのが安心でござるな。

EC2 から DB に接続して SQL を実行する

  • 上部の検索バーに EC2 と入力し、表示された「EC2」を選択します
  • 左側ナビゲーションの「インスタンス」を選択し、rds-web-server を選択して「接続」をクリックします
  • 「セッションマネージャー」タブを選択し、「接続」をクリックします
  • ブラウザ上にターミナルが開いたら、まず DB のエンドポイントを名前解決します。<エンドポイント> は控えた値に置き換えてください
getent hosts <エンドポイント>

10.0.11.x または 10.0.12.x のプライベート IP アドレスが返り、DB がプライベートサブネットにあることが確認できます。

  • mysql クライアントで DB に接続します。パスワードを聞かれたら、作成時に設定したマスターパスワードを入力します
mysql -h <エンドポイント> -P 3306 -u admin -p

MySQL [(none)]> のようなプロンプトが表示されれば接続成功です。

  • 最初のデータベースとして作成した handsondb に切り替え、テーブルを作ってデータを入れてみます
USE handsondb;
CREATE TABLE members (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO members VALUES (1, 'cloud-osaru'), (2, 'tohi');
SELECT * FROM members;

SELECT の結果に 2 行が表示されれば、EC2 からプライベートサブネットの RDS へ接続して読み書きできています。

Session Manager のターミナルで getent hosts がプライベート IP を返し、mysql クライアントで接続して SELECT の結果が表示されている画面
Session Manager のターミナルで getent hosts がプライベート IP を返し、mysql クライアントで接続して SELECT の結果が表示されている画面
  • exit と入力して mysql クライアントを終了します
クラウドおさる

DB にはパブリック IP もインターネットへの道もないのに、腕章(rds-web-sg)を付けた Web サーバーからだけは話しかけられたのでござる。プライベートサブネット・パブリックアクセスなし・セキュリティグループ参照の 3 つがそろって、この形になるのでござるな。

まとめ

  • Amazon RDS は、OS や DB ソフトウェアのパッチ適用、バックアップ、障害検出と復旧などを AWS が引き受けるマネージドのリレーショナルデータベースサービスである
  • エンジンは MySQL・PostgreSQL・MariaDB・Oracle・SQL Server・Db2 から選び、性能は DB インスタンスクラスで決まる
  • マルチ AZ 配置は可用性のための仕組み(同期レプリケーション、スタンバイは読み取りを処理しない)、リードレプリカは読み取り性能のための仕組み(非同期レプリケーション、読み取り専用)である
  • 自動バックアップは保持期間(0〜35 日)内の任意の時点に復元でき、手動スナップショットは削除するまで残る
  • DB サブネットグループには 2 つ以上の AZ のサブネットが必要で、パブリックアクセスを「なし」にしてプライベートサブネットに置くのが基本である
  • DB 側のセキュリティグループのソースに EC2 のセキュリティグループを指定すると、そのセキュリティグループを持つインスタンスからの通信だけを許可できる
  • Amazon Aurora は MySQL / PostgreSQL 互換のエンジンで、3 AZ にコピーされ自動拡張するクラスターボリュームを使う。Aurora Serverless v2 は負荷に応じて容量を自動で増減する

参照先

キャリア相談
クラウドおさる

独学の先に、AWS の仕事がある ── ジュニアおさるのキャリア相談

CLF には受かったけれど、次に何をすればいいのか分からない。独学で AWS を学ぶジュニアおさるの相談に、株式会社ジェニュイン代表の土肥が答えています。

  • ✓資格はゴールか、CLF の次に何から手を付けるか
  • ✓EC2 の次に作ってみる構成と、IaC・コスト管理
  • ✓実務経験ゼロでも、面接で話せる「これまで」の作り方
新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次