VSCode Remote Containersで.NET Core + MySQL + Elasticsearchの開発環境構築 の続きです。
今回はRDSを使用したMySQLインスタンスをAWS上に構築し、EC2インスタンス上に配置されたWebアプリから接続するところまでをご紹介しようと思います。
#環境
MySQL 8.0.20
#RDSインスタンスの作成
まずはRDSインスタンスを作成していきましょう。
以下手順でRDSのコンソールを開き、データベースの作成メニューを開いてください。
- AWSマネジメントコンソールにログイン
- 「サービス」の「すべてのサービス」に
RDS
を入力 - RDSへのリンクが表示されるので押下
- RDSコンソールが表示されるので、「データベースの作成」を押下
以降各セクションごとに説明します。
###データベースの作成方法
簡単作成でも問題ありませんが、今回は練習の意味で標準作成を選択します。
###エンジンのオプション
MySQLを選択します。
バージョンは8.0.20にしました。
###テンプレート
今回は勉強用なので、無料利用枠を使用します。
###設定
MySQLに接続するマスターユーザの情報を入力します。
今回はインスタンス名をasp-net-app-db
、ユーザ名はデフォルトのadmin
に設定しました。
パスワードは適宜設定してください。
また、ユーザ名とパスワードは後ほど接続文字列を設定する際に利用するので、どこかに書き留めておいてください。
###DB インスタンスサイズ
無料枠なのでdb.t2.microのみ有効です。
そのまま進みましょう。
###ストレージ
ストレージタイプ、ストレージ割り当てはそれぞれデフォルト値でOKです。
ストレージの自動スケーリングについては、万が一なにか起こった場合にスケールされるのを防ぐため、一応チェックを外しておきました。
###可用性と耐久性
このセクションは無料枠の場合特に設定できる項目がないので次に進みます。
###接続
RDSのインスタンスを配置するVPCを選択してください。
要件として、VPC内に別々のアベイラビリティゾーンに属するサブネットが最低2つ必要です。
次に、追加の接続設定を編集していきます。
設定名 | 設定値 |
---|---|
サブネットグループ | デフォルト値 |
パブリックアクセス可能 | なし |
VPCセキュリティグループ | 事前に作成したセキュリティグループ |
アベイラビリティゾーン | 指定なし |
データベースポート | 3306 |
※VPCセキュリティグループについてはポート3306が開いている必要があります。
###追加設定
最初のデータベース名にasp_net_sample
を入力し、それ以外は全て無効に設定します。
設定後、データベースの作成を押下するとインスタンスの作成が開始されます。
#接続文字列を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インスタンスが作成されたばかりでテーブルが存在していないので、環境の初期化
を押下します。
以下のような画面が表示されれば正常に動作しています。