読者です 読者をやめる 読者になる 読者になる

おはよう君需要なし

求不得苦な日々

遅ればせながらAWSに挑戦(その1)

Amazon Web Service AWSに挑戦

はじめに

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を入力して接続!

・・・のはずが

f:id:yoh_mar28:20170110214700p:plain

provider: TCP Provider, error: 0 - 待ち操作がタイムアウトになりました
Microsoft SQL Server 、エラー: 258

うーん、色々調べてみたけどどうやらこちらのファイヤーウォールの問題かも・・・?セキュリティグループのインバウンド以外にいじらなきゃいけないところあるのかしら

というわけで代案

上のような状況に陥ってしまったわけですが、ネットで検索するもニッチなシチュエーションゆえ集まる情報が少なく数時間ロスしてしまったので代案

などを考えました。前者は論外ですね。30GBしかインスタンスに容量割り振ってないし、1コアで作業とか考えたくもない感じ。というわけでEC2インスタンス君にはWebサーバー兼踏み台になってもらうことにしました。

もうちょっとリッチに予算を割り振れるならLinuxインスタンスでも作って踏み台専用運用するんですが、無料枠内のストレージをやりくりするのはしんどい・・・

というかAWSの無料枠ってLinuxWindowsでひとつずつインスタンス作れるんだろうか?

Windows Server に OpenSSH導入

というわけで、Windows Serverのインスタンスを立ち上げ、セキュリティグループのインバウンドにRDPとHTTPSの許可を追加します。

お次はリモートデスクトップインスタンスに接続して環境のセットアップです。Windowssshdとかいうヤバめなことに手を出します。が、なんとOpenSSHのWindows版が出ていた!

dev.classmethod.jp

.net coreといいLinux sub systemといい、すごいですね。

公開鍵認証に変更して、パスワード認証封じてsshdセットアップは終了。

あとは、RDSがローカルなIPで動くように「パブリックアクセス可能」を「いいえ」にします。これを切り替えることでエンドポイントのアドレスで返ってくるIPがグローバルとローカルで切り替わります。

RDSのセキュリティグループのインバウンドはEC2がいるセキュリティグループからの1433ポート許可を追加します。

sshクライアントの設定

クライアント(トンネリング)にはputtyを使用します。こっちもOpenSSHでやればよかったかな?とか思わないこともないんですが、使い慣れているものを選びました。

f:id:yoh_mar28:20170110220059p:plain

とりあえず11433で1433にフォワードする設定でいきます。

いざ接続。

先ほど設定したポートで再度SSMSでつなぎます。サーバー名に「127.0.0.1, 11433」と書いてユーザ情報を入力します。

f:id:yoh_mar28:20170110220728p:plain

やったー!。

なお

SSMSで「localhost, 11433」でつなごうとすると失敗します。

f:id:yoh_mar28:20170110220819p:plain

おわりに

というわけで今日はここまで。

ぜんぜん進んでいなくて、めちゃくちゃ時間を無駄にした感がすごいです。環境構築だけでこんなにしんどいとはなー(笑

はたして続くのだろうか。