Help us understand the problem. What is going on with this article?

【AWS入門】RDSでMySQL環境を構築してEC2上のWebアプリと連携

VSCode Remote Containersで.NET Core + MySQL + Elasticsearchの開発環境構築 の続きです。

今回はRDSを使用したMySQLインスタンスをAWS上に構築し、EC2インスタンス上に配置されたWebアプリから接続するところまでをご紹介しようと思います。

環境

MySQL 8.0.20

RDSインスタンスの作成

まずはRDSインスタンスを作成していきましょう。
以下手順でRDSのコンソールを開き、データベースの作成メニューを開いてください。

  1. AWSマネジメントコンソールにログイン
  2. 「サービス」の「すべてのサービス」にRDSを入力
  3. RDSへのリンクが表示されるので押下
  4. RDSコンソールが表示されるので、「データベースの作成」を押下

以降各セクションごとに説明します。


データベースの作成方法

簡単作成でも問題ありませんが、今回は練習の意味で標準作成を選択します。
スクリーンショット 2020-10-21 3.32.21.png

エンジンのオプション

MySQLを選択します。
バージョンは8.0.20にしました。
スクリーンショット 2020-10-26 19.21.14.png

テンプレート

今回は勉強用なので、無料利用枠を使用します。
スクリーンショット 2020-10-21 3.31.23.png

設定

MySQLに接続するマスターユーザの情報を入力します。
今回はインスタンス名をasp-net-app-db、ユーザ名はデフォルトのadminに設定しました。
パスワードは適宜設定してください。

また、ユーザ名とパスワードは後ほど接続文字列を設定する際に利用するので、どこかに書き留めておいてください。
スクリーンショット 2020-10-26 19.27.01.png

DB インスタンスサイズ

無料枠なのでdb.t2.microのみ有効です。
そのまま進みましょう。
スクリーンショット 2020-10-21 3.31.43.png

ストレージ

ストレージタイプ、ストレージ割り当てはそれぞれデフォルト値でOKです。
ストレージの自動スケーリングについては、万が一なにか起こった場合にスケールされるのを防ぐため、一応チェックを外しておきました。
スクリーンショット 2020-10-26 19.35.25.png

可用性と耐久性

このセクションは無料枠の場合特に設定できる項目がないので次に進みます。

接続

RDSのインスタンスを配置するVPCを選択してください。
要件として、VPC内に別々のアベイラビリティゾーンに属するサブネットが最低2つ必要です。
スクリーンショット 2020-10-21 3.33.08.png

次に、追加の接続設定を編集していきます。

設定名 設定値
サブネットグループ デフォルト値
パブリックアクセス可能 なし
VPCセキュリティグループ 事前に作成したセキュリティグループ
アベイラビリティゾーン 指定なし
データベースポート 3306

※VPCセキュリティグループについてはポート3306が開いている必要があります。

スクリーンショット 2020-10-26 19.50.19.png

データベース認証

パスワード認証を設定します。
スクリーンショット 2020-10-21 3.35.05.png

追加設定

最初のデータベース名にasp_net_sampleを入力し、それ以外は全て無効に設定します。

スクリーンショット 2020-10-21 3.36.07.png
スクリーンショット 2020-10-21 3.36.28.png


設定後、データベースの作成を押下するとインスタンスの作成が開始されます。

接続文字列をServiceの環境変数に記述

最後に前回作成したアプリケーションからRDSインスタンスを参照できるように、Serviceの環境変数を編集します。

EC2インスタンスにSSH後、以下コマンドを実行します。

$ sudo vim /etc/systemd/system/kestrel-asp-net-app.service

#Environment=ASPNETCORE_ENVIRONMENT=Production以下に追加
Environment=DB_CONNECTION_STRING=server=サーバのエンドポイント;uid=admin;pwd=パスワード;database=asp_net_sample
Environment=ELASTIC_SEARCH_SERVER=http://localhost:9200

Environment=ELASTIC_SEARCH_SERVER=http://localhost:9200
これについては何かしら入れておかないとエラーになるため、ダミーでもいいので追加しておきます。
Elasticsearchのドメインがある場合はそのURLを記入しましょう。
Elasticsearch Serviceについてはこちら

設定後、反映のためEC2インスタンスを再起動します。

確認

ローカルマシンにてhttp://サーバIP/をブラウザで開いてください。
RDSインスタンスが作成されたばかりでテーブルが存在していないので、環境の初期化を押下します。
以下のような画面が表示されれば正常に動作しています。
スクリーンショット 2020-10-27 0.05.05.png

ashicom
時間があるときに試してみたことなどをつらつらと投稿しています。投稿した記事がどこかの誰かの役に立てば幸いです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away