遅ればせながらAWSに挑戦(その1)
はじめに
AWSなんて今時小学生でも使ってるよ~~~~って感じの御時勢ですが、いい年して使ったことないのも恥ずかしいのでちょっと勉強してみました。
やってみたいこと
- Webフロントエンド
- DBなどバックエンド
- Xamarinによる各プラットフォームへの対応
などを全部.net frameworkでやりたい。というのも、今ローカルな環境で作ってるASP.netの諸々をクラウドベースに移行できるか?ということにちょっと興味を持ったためです。
Xamarinについては以前触ったのであんまり抵抗はないんですが、クラウド!って感じのはまったく触ったことないのでいかがなものかなぁと。
今日やったこと
初日から大苦戦しました。とりあえず考えているのはIISを動かすための「Windows Server」と.netからシームレスに活用するための「Microsoft SQL Server (MS SQL)」。 Windows Server と MS SQLが同梱されているやつは無料枠じゃないので今回はEC2でWindows Serverを立てて、RDSでMS SQLを使えるようにします。
RDSを立てる
まぁこれは普通にやります。セキュリティグループのインバウンドに「マイIP」からの1433ポートを使用した接続を加えました。
SQL Server Management Studioインストール
クライアントPCからSQL Serverを管理するためにSQL Server Management Studio (SSMS)をインストール。ここに立てたRDSインスタンスのグローバルIPを入力して接続!
・・・のはずが
provider: TCP Provider, error: 0 - 待ち操作がタイムアウトになりました Microsoft SQL Server 、エラー: 258
うーん、色々調べてみたけどどうやらこちらのファイヤーウォールの問題かも・・・?セキュリティグループのインバウンド以外にいじらなきゃいけないところあるのかしら
というわけで代案
上のような状況に陥ってしまったわけですが、ネットで検索するもニッチなシチュエーションゆえ集まる情報が少なく数時間ロスしてしまったので代案
などを考えました。前者は論外ですね。30GBしかインスタンスに容量割り振ってないし、1コアで作業とか考えたくもない感じ。というわけでEC2インスタンス君にはWebサーバー兼踏み台になってもらうことにしました。
もうちょっとリッチに予算を割り振れるならLinuxのインスタンスでも作って踏み台専用運用するんですが、無料枠内のストレージをやりくりするのはしんどい・・・
というかAWSの無料枠ってLinuxとWindowsでひとつずつインスタンス作れるんだろうか?
Windows Server に OpenSSH導入
というわけで、Windows Serverのインスタンスを立ち上げ、セキュリティグループのインバウンドにRDPとHTTPSの許可を追加します。
お次はリモートデスクトップでインスタンスに接続して環境のセットアップです。Windowsでsshdとかいうヤバめなことに手を出します。が、なんとOpenSSHのWindows版が出ていた!
.net coreといいLinux sub systemといい、すごいですね。
公開鍵認証に変更して、パスワード認証封じてsshdセットアップは終了。
あとは、RDSがローカルなIPで動くように「パブリックアクセス可能」を「いいえ」にします。これを切り替えることでエンドポイントのアドレスで返ってくるIPがグローバルとローカルで切り替わります。
RDSのセキュリティグループのインバウンドはEC2がいるセキュリティグループからの1433ポート許可を追加します。
sshクライアントの設定
クライアント(トンネリング)にはputtyを使用します。こっちもOpenSSHでやればよかったかな?とか思わないこともないんですが、使い慣れているものを選びました。
とりあえず11433で1433にフォワードする設定でいきます。
いざ接続。
先ほど設定したポートで再度SSMSでつなぎます。サーバー名に「127.0.0.1, 11433」と書いてユーザ情報を入力します。
やったー!。
なお
SSMSで「localhost, 11433」でつなごうとすると失敗します。
おわりに
というわけで今日はここまで。
ぜんぜん進んでいなくて、めちゃくちゃ時間を無駄にした感がすごいです。環境構築だけでこんなにしんどいとはなー(笑
はたして続くのだろうか。