AWS Elastic BeanstalkのWindows環境からAmazon RDS for SQL Serverに接続する

 

これまで、Beanstalkの環境の準備と、RDSの環境の準備を行ってきた。

1、AWS Elastic BeanstalkのWindows環境にASP.NETアプリケーションをデプロイする
https://www.cyberarchitect.net/blog/archives/775

2、Amazon RDS for SQL Serverにオンプレミス環境のデータをインポート
https://www.cyberarchitect.net/blog/archives/825
 

今回は、BeanstalkにデプロイしたASP.NETアプリケーションから、RDS for SQL Serverに接続を行う。
 

1、オンプレミスでデータベースアプリケーションを作成する

今回も、AWSを意識する必要はない。
普通に、employees表にクエリを発行し、GridViewに結果を表示するアプリを作成しておく。

 

2、web.configの修正

Beanstalkにアプリをデプロイする前に、web.configに記述されているSqlDataSourceのconnectionStringを、RDSに合わせて変更しておく。

サーバエクスプローラーにて、RDS用のデータ接続(今回であればrds.awssampledb.Northwind)を右クリックし、プロパティを実行。

「接続文字列」の文字列をコピーする。

web.configを開き、connectionStringに値をペーストする。パスワード部分は******になっているので、実際のパスワードを入力すること。

<?xml version="1.0"?>

<!--
ASP.NET アプリケーションを構成する方法の詳細については、
http://go.microsoft.com/fwlink/?LinkId=169433 を参照してください
-->

<configuration>

<connectionStrings>
<add name="NorthwindConnectionString" connectionString="Data Source=awssampledb.c0gklmclwhik.us-east-1.rds.amazonaws.com,1433;Initial Catalog=Northwind;User ID=awsdbadm;Password=<ユーザのパスワード>"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="false" targetFramework="4.0" />
</system.web>

</configuration>

これで、データベースアプリケーションをBeanstalkにデプロイする準備はできた。
 

3、アプリケーションのデプロイ

Visual Studio上で、デプロイ対象のWebサイトを右クリックし、Publish to AWSを実行。

前回設定したAccountが残っているので、AWS Elastic Beanstalkを選択し、Next。

今回も”Deploy application incrementaly”のチェックははずし、Next。

URL文字列を設定。Next。

Optionsの設定を行う。32bit環境でアプリを作成した場合は、”Enable 32-bit applications”のチェックを忘れないこと。

RDSが起動した状態でデプロイする場合、RDSのSecurity Groupの設定画面が表示される。
defaultをチェックし、Next。

Deployを実行。

Statusが”Environment is healthy”と表示されれば成功。

 

4、アプリケーションにアクセス

ブラウザを開き、アプリケーションにアクセス。

BeanstalkにデプロイしたASP.NETアプリケーションから、RDSのSQL Serverにクエリを発行し、処理結果をブラウザに返すことができた。
 
 

これまでは、

サーバを調達・キッティング、ストレージを調達・設定、L2/L3機器を調達・設定、仮想化環境の設定、OSをインストール・設定、IISと.NET Frameworkをインストール・設定、データベースをインストール・設定、インターネット回線とグローバルIPを調達、負荷分散装置を調達・設定、ファイアウォールを調達・設定・・etc

ときて、やっとアプリのデプロイまで辿りつけたのだが、BeanstalkとRDSのWindows対応で、インフラ構築工数が相当削減されることがわかる。

今回は単純な環境でテストしたため、手順としては非常に簡単だったが、商用環境の場合、そもそもデータ容量が数百GB~数TBであったり、外部キーやトリガー等の絡みで、データ移行はもっと複雑になる。また、運用等も含めて色々と考えることはたくさんあるため、商用環境での利用の場合、日本のAmazonさんに技術支援を依頼することが必要になると思われる。営業窓口や勉強会等を通じて、Amazonさんとは日頃からリレーションを作るようにしておきましょう。