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。
Optionsの設定を行う。32bit環境でアプリを作成した場合は、”Enable 32-bit applications”のチェックを忘れないこと。
RDSが起動した状態でデプロイする場合、RDSのSecurity Groupの設定画面が表示される。
defaultをチェックし、Next。
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さんとは日頃からリレーションを作るようにしておきましょう。