RDSでMySQLを作ってみる

RDSというものを知りました。

ponsuke-tarou.hatenablog.com

パソコンから直接使えるRDSを作成します。

VPC内のEC2インスタンスではなく、VPC外部からインターネットを経由して接続できるようにします。
一番簡単そうな以下の方法にチャレンジします(今回はお勉強用なので選びましたがお仕事用にはセキュリティが緩いです)。

Publicly Accessible オプションを有効化して接続する
https://cdn-ssl-devio-img.classmethod.jp/wp-content/uploads/2018/08/f3b4c300a002e4a591d2e220db0e6890.png
RDSをパブリックサブネットに配置し、Publicly Accessibleを有効にする方法です。 パブリックサブネットとは、インターネットゲートウェイへのルーティングが可能なサブネットです。 Publicly Accessibleを有効にすると、RDSのエンドポイントがパブリックIPアドレスに解決されます。 セキュリティグループでクライアントの拠点のIPアドレスだけ許可すれば、拠点からのみ接続できます。

本番データを扱う場合などは、SSLを利用した暗号化を検討します。
手元の作業端末からAmazon RDSに接続する方法 | Developers.IO

RDSでMySQLを作成してみます。

  1. AWS マネジメントコンソールで[RDS]を選択して、RDSの画面を表示します。
  2. [データベースの作成]ボタンで[データベースの作成]画面を表示します。
  3. 以下を設定して[データベースの作成]ボタン
    • データベース作成方法を選択 : 標準作成
    • エンジンのタイプ : MySQL
    • エディション : MySQL Community
    • バージョン : MySQL5.7.28(お好みのバージョンを選択でOK)
    • テンプレート : 無料利用枠(お勉強用なので小さいサイズにしました)
    • DB インスタンス識別子 : mysql-57(お好みの名前でOK)
    • マスターユーザー名 : admin(お好みの名前でOK)
    • パスワードの自動生成 : ON
    • パブリックアクセシビリティ : はい
      • この設定によりVPC外部から接続できるようになります。設定は自己責任でしてください。
    • 削除保護の有効化 : ON
    • 上記以外の設定値は規定値のまま
  4. 画面上部に表示される[認証情報の詳細を表示]ボタンでパスワードを確認してどっかに記録しておきます。
    • f:id:ponsuke_tarou:20200217220744p:plain
      このパスワードを表示できるのはこのときだけです。

セキュリティグループに自分のパブリックIPアドレスを設定します。

  1. アクセス情報【使用中のIPアドレス確認】で自分のパブリックIPアドレスを確認します。
    • パブリックIPアドレスは固定でないことが多いので、定期的にパブリックIPアドレスを確認して設定し直します。
  2. データベースの一覧にある作成したRDSのDB識別子リンクで詳細画面を表示します。
  3. [接続とセキュリティ]にある[VPC セキュリティグループ]のリンクでセキュリティグループの画面を表示します。
    • f:id:ponsuke_tarou:20200219201158p:plain
  4. [インバウンド]タブの[編集]ボタンでダイアログを表示します。
  5. [ルールの追加]ボタンで行を追加して以下を設定します。
  6. [保存]ボタンで保存してダイアログを閉じます。

RDSへmysqlコマンドで接続してみます。

(停止していたら)RDSを起動します。
  1. データベースの一覧で作成したRDSを選択します。
  2. [アクション] > [開始]で起動します(少々時間がかかります)。
  3. 一覧の[ステータス]が「利用可能」になったら起動しています。
    • f:id:ponsuke_tarou:20200217230436p:plain
エンドポイントを確認します。
  1. データベース一覧から作成したDB 識別子のリンクから詳細画面を開きます。
  2. [接続とセキュリティ]タブ > [エンドポイント]に表示されている「{DB識別子}.xxxxx.{リージョン}.rds.amazonaws.com」がエンドポイントで接続情報となります。
MySQLにログインします。
mysqlのオプション 意味
-h MySQL サーバーに接続するホスト
-P 接続に使用する TCP/IP ポート番号
-p サーバーに接続する際に使用するパスワードを聞く
-u サーバーへの接続時に使用する MySQL ユーザー名
$ mysql -h mysql-57.xxx.{リージョン}.rds.amazonaws.com -P 3306 -u admin -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.7.28-log Source distribution

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

うまく接続できない場合は、RDSの[パブリックアクセシビリティ]またはセキュリティグループの設定が誤っています。
参考 : ERROR 2003 (HY000): Can't connect to MySQL server on - Qiita

$ mysql -h mysql-57.xxx.{リージョン}.rds.amazonaws.com -P 3306 -u admin -p
Enter password: 
ERROR 2003 (HY000): Can't connect to MySQL server on 'mysql-57.xxx.{リージョン}.rds.amazonaws.com' (60)

自動停止するようにLambdaを設定します。

RDSは、停止していても7日で自動起動します。
そのまま使わずに放置しているとお金がかかります。
なので自動停止するようにします。

自動停止時間をAutoStopタグに設定します。

  1. データベース一覧から作成したDB 識別子のリンクから詳細画面を開きます。
  2. [タグ]タブ > [追加]ボタンで[タグの追加] ウィンドウを表示します。
  3. [タグキー]に「AutoStop」と[値]に「自動停止したい時間」を入力して[追加]ボタンでタグを追加します。
    • f:id:ponsuke_tarou:20200217221924p:plain

自動停止するLambdaを設定します。

以下のページに従ってLambdaを設定します。
ponsuke-tarou.hatenablog.com


f:id:ponsuke_tarou:20200219195025j:plain
秋葉原にある柳森神社内の猫神