AWS Elastic Beanstalk
開発者ガイド

.NET アプリケーション環境に Amazon RDS DB インスタンスを追加

Amazon Relational Database Service (Amazon RDS) DB インスタンスを使用して、アプリケーションによって収集されて変更されたデータを保存できます。データベースは、Elastic Beanstalk でお客様の環境にアタッチして管理したり、外部で作成して管理したりできます。

初めて Amazon RDS を使用する場合は、Elastic Beanstalk コンソール を使用してテスト環境に DB インスタンスを追加し、そのインスタンスにアプリケーションが接続できることを確認します。

データベースに接続するには、アプリケーションに適切なドライバーを追加し、コードにドライバークラスをロードし、Elastic Beanstalk によって提供される環境プロパティで接続文字列を作成します。設定と接続コードは、使用するデータベースエンジンとフレームワークによって異なります。

注記

学習目的またはテスト環境では、Elastic Beanstalk を使用して DB インスタンスを追加できます。

本番稼働環境では、Elastic Beanstalk 環境外部に DB インスタンスを作成し、データベースリソースから環境リソースを分離できます。この方法を使用することにより、環境を終了するときに DB インスタンスは削除されません。外部 DB インスタンスを使用すると、複数の環境から同じデータベースに接続し、Blue/Green デプロイを実行することができます。手順については、「Elastic Beanstalk を Amazon Relational Database Service に使用する」を参照してください。

環境に DB インスタンスを追加

お客様の環境に DB インスタンスを追加するには

  1. Elastic Beanstalk コンソール を開きます。

  2. お客様の環境の管理ページに移動します。

  3. [Configuration] を選択します。

  4. [データベース] 設定カテゴリで、[変更] を選択します。

  5. DB エンジンを選択して、ユーザー名とパスワードを入力します。

  6. [Apply] を選択します。

DB インスタンスの追加には約 10 分かかります。環境の更新が完了すると、DB インスタンスのホスト名とその他の接続情報は以下の環境プロパティを通じてアプリケーションに使用できるようになります。

  • RDS_HOSTNAME – DB インスタンスのホスト名。

    Amazon RDS コンソールラベル – エンドポイント (これはホスト名です)。

  • RDS_PORT – DB インスタンスが接続を許可するポート。デフォルト値は DB エンジンによって異なります。

    Amazon RDS コンソールラベル – ポート

  • RDS_DB_NAME – データベース名、ebdb

    Amazon RDS コンソールラベル – DB 名

  • RDS_USERNAME – お客様のデータベース用に設定したユーザー名。

    Amazon RDS コンソールラベル – ユーザー名

  • RDS_PASSWORD – お客様のデータベース用に設定したパスワード。

内部 DB インスタンスの設定の詳細については、データベースを Elastic Beanstalk 環境に追加するを参照してください。

ドライバーのダウンロード

EntityFramework を使用して開発環境用の NuGet パッケージとデータベースドライバーをダウンロードしてインストールします。

.NET 用の共通エンティティフレームワークデータベースプロバイダ

  • SQL ServerMicrosoft.EntityFrameworkCore.SqlServer

  • MySQLPomelo.EntityFrameworkCore.MySql

  • PostgreSQLNpgsql.EntityFrameworkCore.PostgreSQL

データベースへの接続

Elastic Beanstalk は、環境プロパティでアタッチされた DB インスタンスの接続情報を提供します。ConfigurationManager.AppSettings を使用してプロパティを読み取り、データベース接続を設定します。

例 Helpers.cs - 接続文字列メソッド

using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Web; namespace MVC5App.Models { public class Helpers { public static string GetRDSConnectionString() { var appConfig = ConfigurationManager.AppSettings; string dbname = appConfig["RDS_DB_NAME"]; if (string.IsNullOrEmpty(dbname)) return null; string username = appConfig["RDS_USERNAME"]; string password = appConfig["RDS_PASSWORD"]; string hostname = appConfig["RDS_HOSTNAME"]; string port = appConfig["RDS_PORT"]; return "Data Source=" + hostname + ";Initial Catalog=" + dbname + ";User ID=" + username + ";Password=" + password + ";"; } } }

接続文字列を使用してデータベースコンテキストを初期化します。

例 DBContext.cs

using System.Data.Entity; using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.EntityFramework; namespace MVC5App.Models { public class RDSContext : DbContext { public RDSContext() : base(GetRDSConnectionString()) { } public static RDSContext Create() { return new RDSContext(); } } }