追記
第二回目のVPCの環境と名称が違っておりました。
3. EC2インスタンスの作成
で使うサブネット名は
test-public-subnet-a
となっております。
後日改定投稿いたします。
@mitch0807 さん、ご指摘いただきありがとうございました。
はじめに...
VPCを構築したら、[EC2]の接続先の[RDS]を構築して見ましょう。
前回作成したサブネット、セキュリティグループに適用していきます。
ぽちぽち進めていけばあっという間に終わってしまいますので、DBのメンテナンス用EC2構築までやって見ましょう。
EC2メインの回は別途行います。
やること
- RDSの設計
- セキュリティグループの作成、設定
- EC2インスタンスの作成
- Elastic IPの関連付け、EC2インスタンスにSSH接続
- EC2インスタンスからRDSへ接続
まずは[RDS]を設計しましょう。今回は[MySQL]を使います。
次にEC2を設置するセキュリティグループの接続設定を行います。
最後にEC2インスタンスを立ち上げ、[SSH]通信でデータベースに接続できることを確認します。
1. RDSの設計
今回のタイトルにもなっている[RDS]です。[Relational Database Service]と言います。
webサービスを作るにあたって、
サービスをローカルで作成するとき同じパソコンの中にDBをインストールするように、
「EC2を建てればその中にDBをインストールしてそこで運用する」こともできます。
では、RDSのメリットとは何か?
- EC2から切り離されているので、耐障害性、冗長性、セキュリティが良い
- AWSがサポートしてくれるので、クラウド内でリレーショナルデータベース(RDB)を簡単に設定、運用、およびスケールできる
- バックアップやバージョンアップを自動化できる
などが挙げられると思います。
デメリットといえば、お金がかかることでしょうかね?
「自分でDB管理は全部できるし、管理する方が目的!」
ぐらいでないのであればRDSを使う一択でいいでしょう。
VPC:
https://aws.amazon.com/jp/rds/
ドキュメント:
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Welcome.html
では始めていきましょう。
まずはサブネットグループの作成です。
画面左上の[サービス]から[Reltional Database Service]をクリックします。
まずは前回作成したDBサブネットをサブネットグループとしてまとめます。
サブネットグループについての基本情報を記述します。
DBサブネットが表示されているので、確認できたら[作成]を押しましょう。
このときwebapp用などのDBサブネット以外のサブネットが入っていたら外しておきましょう。
画面が戻ってきて、作成したサブネットグループのステータスが[完了]になっていたら成功です。
DBインスタンスを作成していきます。サイドバー[インスタンス]から、[DBインスタンスの起動]を選択します。
画面下部に[RDS無料利用枠の対象オプションのみを有効化]という項目をチェックし、[MySQL]を選択したら次に進みます。
詳細設定では、インスタンスのバージョンやクラスを選択できます。RDSの無料利用枠は[20GB]なので、注意しましょう。
画面下部では、dbインスタンスに一意の命名をしたり、ユーザーやパスワードを設定します。
これは後ほどEC2からアクセスするときにも使いますので、しっかり考えて作りましょう。
Tips:
[DBインスタンス識別子]は_(アンダースコア)が使えず、また[マスターユーザー]は-(ハイフン)が使えません。注意しましょう。
VPC、サブネットグループ共に作成したものを選びます。
パブリックアクセシビリティはそのままで、アベイラビリティゾーンは好みや値段で選んでください。
VPCセキュリティグループは[既存のVPCセキュリティグループの選択]にします。
そのままでは[default]が残っているので、削除してDBのセキュリティグループのみを選んでください。
データベースに名前を決めて、ポートの解放を設定します。
MySQLのポートである[3306]が自動で入力されているので特にいじらなくて大丈夫です。
吐き出すログの種類を選択します。
とりあえず全部チェックしておくで最初はいいと思います。
以上を入力したら画面下部から[インスタンスの作成]を押してください。
これでインスタンスの部分に作成中と表示されましたね。完了するまでに5分ほどかかるので、先に進みましょう。
2. セキュリティグループの作成、設定
VPCからこの後作成する[DBメンテナンス用EC2]を配置するセキュリティグループを作成します。
ここは前回と手順は同じですね。[サービス]からサイドバー[セキュリティグループ]を選択し、[セキュリティグループの作成]をクリックします。
はい、これでメンテナンス用のセキュリティグループの作成が完了しました。
このままMySQLのポート[3306]を通過できるように設定してしまいましょう。
DBセキュリティグループに、作成したセキュリティグループからのアクセスを許可します。
DBセキュリティグループの[インバウンドのルール]から[編集]をクリックします。
この作業は「[DBセキュリティグループ]に、ソースセキュリティグループとしての[メンテナンス用のセキュリティグループ]から"3306/tcp"に対する通信を許可するルール」を設定します
字面だけではわかりにくいが、通信の穴を開けているだけです。
3. EC2インスタンスの作成
では、ここからメンテナンス用EC2の立ち上げを行います。
画面左上[サービス]から[EC2]を選択します。
サイドバー[インスタンス]から[インスタンス作成]を実行します。
クイックスタートの中にある[Amazon Linux 2]を選択します。
ここには[Red Hat]や[Windows]も含めて多くのマシンイメージ(AMI)が揃っています。
自身の使いたい環境に合わせて構成してください。
次にインスタンスタイプの選択です。DBのメンテナンスに大掛かりなものは必要ないので、そのまま無料枠の[t2.micro]を使いましょう。
ちなみにインスタンスの種類についてはAWSが詳しく解説してくださっている資料があります。[コンピューティング最適化]だったり[メモリの最適化]、[FPGA]などと[HPC]の分野が好きな方はここだけでニヤニヤできますね。
私は大好きです。
一般的なWebappなどの配置に使う程度でしたら現行世代の[m3~m5]のあたりを使えば十分でしょう。
他は[機械学習]や[ビックデータ]などの分野で扱うことがあるでしょうね。
次にインスタンス数を決めて、ネットワークとサブネットを前回作成したものを指定します。
この辺りの詳しい内容はEC2がメインの回で説明します。
特に変更する箇所はありません。
無料利用枠は[30GB]までなので、数字を大きくしすぎると無料利用枠を超えてしまいますので注意してください。
タグを設定して次に進みます。
セキュリティグループを設定します。
既存のセキュリティグループから、今回はメンテナンス用のEC2ですので[db-maintain-sg]を選択します。
まだセキュリティグループに穴を開けていないので「このままではアクセスできませんよ」と警告してもらえます。この後セキュリティグループをいじるので、このまま進みましょう。
設定の確認が終わると、最後に[キーペア]の作成画面になります。
キーペアとは、サーバーのパソコンにアクセスして中身をいじる[SSH]通信で必要になるものです。
名前をつけてダウンロードしましょう。
インスタンスの画面に戻り、表示に[running]があれば無事インスタンス作成完了です。
先ほどのDBセキュリティグループと同じように、メンテナンス用のセキュリティグループに今度は"22/tcp"の穴を開けましょう。今度は自分で確認するために外部に解放する必要があるので、ソースは[0.0.0.0/0]という誰でも使える設定にしておきます。
4. EC2インスタンスにSSH接続
まずは先ほど作ったEC2インスタンスに[Elastic IP]を関連付けます。
[Elastic IP]については別途解説しますのでここでは割愛させていただきます。
まずはサイドバー[Elastic IP]から[新しいアドレスの割り当て]を実施します。
[割り当て]を押すだけで簡単に割り当てられてしまいます。
次は画面上部から[アドレスの関連付け]をクリックします。
インスタンスの項目をクリックすると、選択肢に先ほど建てたEC2インスタンスが出てきますので、選択して[関連付け]をクリックすれば完了です。
インスタンスの項目を選択し、画面下部の[Elastic IP]に割り振られた数字が記載されていれば大丈夫です。
今度は自分のパソコン上での操作になります。今回は初期設定の保存先である[Download]上でそのままSSH接続を行います。
ターミナル上から自身の[Downloadフォルダ]に移動します。
次にEC2インスタンスから[接続]をクリックすることで、EC2インスタンスへアクセスするためのコードが出てきますので、これを上から順番にコピー&ペーストしてください。
[ssh -i ~]の入力がされると(yes/no)の選択肢が出てきますので、[yes]と入力してください。
アスキーアートで[EC2]と表示され、無事作成したEC2インスタンスにSSh接続できました。
5. EC2インスタンスからRDSへ接続
まずは接続先のRDSがわからないと困ります。なので接続先を確認しましょう。
画面左上[サービス]から[Relational Database Service]を選択。
サイドバー[インスタンス]から作成したインスタンスをクリックします。
画面を下がっていくと中段ほどに[接続]という項目があります。
ここにある[エンドポイント]というのが接続先のことなので、控えておきましょう。
次はコンソール上でサーバーに必要な内容をインストールしていきます。
[ec2-user@ip-10-0-0-72 ~]$ sudo yum -y update
[ec2-user@ip-10-0-0-72 ~]$ sudo yum -y install mysql
これでシステムのアップデートと[MySQL]をインストールしました。このままRDSに接続してみましょう。
[ec2-user@ip-10-0-0-72 ~]$ mysql test_db -h <エンドポイント> -P 3306 -u test_user -p
Enter password: -> DB設定に使ったパスワードを記述
-h -> エンドポイント
-u -> ユーザー名
-p -> パスワードを要求する
はい、ということで先ほど作った[RDS]の[MySQL]にアクセスできましたね!
これでmysqlのコマンドをぽちぽちして楽しめます。
RDSのインスタンス画面を確認すれば、しっかり接続数が1になっていますね。
##最後に...
ということで今回はRDS編でした。RDSとの接続方法が分かればEC2でDB環境が必要なときに簡単に接続できますね。EC2の中にDBを配置するのも良いですが、せっかく集めたデータが消し飛んじゃうのは嫌ですしね。
今回は触れませんでしたがRDSの設定の項目にバックアップの時間指定や、アップデートの管理、スナップショットの作成など、まだまだ奥深く面白い項目もあるので、今後触れていきたいと思います。
さて、もう2週間しないで[JAWS DAYS 2018]が開催ですね。今からワクワクしています!
皆さんも楽しいAWSライフをお過ごしください!