Azure、AWSを使ったサーバーレスを完全無料でやってみたいと思います。

最初は、AzureのWeb App、SQLデータベースを使ったアプリを作ってみます。
まずはチュートリアル通りやっていきます。

とりあえす、MSアカウントとAzureのアカウントを作成して、ログインします。

ログインするとこんな画面が出るので、


画面上部の「ポータル」をクリックすると、ポータルを開くとこんな感じ。

 

ここのチュートリアルのとおりにアプリを作ってみます。

まずは「前提条件」となっているVisualStudioをインストール。
2017をダウンロードしてインストール。

インストール画面では「Web&クラウド」の「ASP.NETとWeb開発」「Azureの開発」を選択。
(今回は不要だけど、ついでにいろいろインストール)

Visual Studio で、「ファイル」、「新規作成」、「プロジェクト」 の順にクリックして、プロジェクトを作成します。
「新しいプロジェクト」 ダイアログで、「Visual C#」、「Web」、「ASP.NET Web アプリケーション (.NET Framework)」 をにクリックします。
アプリケーションに myFirstAzureWebApp という名前を付けて、「OK」 をクリックします。
「MVC」 テンプレートを選択。

認証が 「認証なし」 に設定されていることを確認して「OK」。
メニューから、「デバッグ」、「デバッグなしで開始」 の順にクリックし、ローカルで Web アプリを実行。

ブラウザが立ち上がってローカル実行した画面が表示された。

 

ソリューション エクスプローラーで myFirstAzureWebApp プロジェクトを右クリックし、「発行」 を選択。
「App Service」⇒「発行」をクリック、「App Service の作成」 ダイアログを開く。
「アカウントの追加」 をクリックし、Azure サブスクリプションにサインイン。
既にサインインしている場合は、目的のサブスクリプションを含んだアカウントをプルダウンで選択。
「リソース グループ」 の横にある 「新規」 をクリックし、適当に名前を付けて「OK」。

「ホスティング プラン」 の隣にある 「新規」 を選択。
「App Service プラン」は適当に。場所は「西日本」。サイズは「無料」を選択。(画像はウソです)
全てデフォルトで「作成」 をクリックして、Azure リソースの作成を開始します。


ウィザードの完了後に、Azure に ASP.NET Web アプリを発行してから、ブラウザーが立ち上がってAzure上のアプリが表示されます。


ダッシュボード画面を見るとアプリができているので、そこからデータベースを作成します。
AzureのSQLデータベースはWebAppsからのアクセスが前提で無料枠があります。
ダッシュボードのSQLデータベースから作ると無料枠が作れないので注意してください。

ダッシュボードのWebAppsからさっき作ったアプリケーションを選択するとアプリケーションのメニューが出ます。
その中から「データ接続」→「追加」をクリックします。


こんな画面が出ます。


名前を適当につけます。
「対象サーバー」→「新しいサーバーを作成」を選択します。
サーバー名、サーバー管理者ログイン、パスワード、場所を選択して登録します。
※サーバー管理者ログイン(ユーザ名)にメールアドレスを使ったらアプリからDBに接続できませんでした。”.”とか”@”とかがあると接続文字列がうまく解釈できないみたいなので無難なユーザ名をつけましょう


「価格レベル」をクリックして、「Free」を選びます。


登録が終わると「データ接続」に表示されます。

SQLデータベースからも見ることが出います。

HomeController.csにDB接続処理を追加します。
通常はweb.configに接続情報を登録しますが、今回はとりあえずコード上に接続文字列を直書きします。

ここを参考にこんな感じで実装しました。

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.SqlClient;
using System.Text;

namespace myFirstAzureWebApp.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";
            try
            {
                SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
                builder.DataSource = "your_server.database.windows.net";
                builder.UserID = "your_user";
                builder.Password = "your_password";
                builder.InitialCatalog = "your_database";

                using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
                {
                    connection.Open();
                    ViewBag.Message = "Connectioon success!!!!";

                    //StringBuilder sb = new StringBuilder();
                    //sb.Append("SELECT TOP 20 pc.Name as CategoryName, p.name as ProductName ");
                    //sb.Append("FROM [SalesLT].[ProductCategory] pc ");
                    //sb.Append("JOIN [SalesLT].[Product] p ");
                    //sb.Append("ON pc.productcategoryid = p.productcategoryid;");
                    //String sql = sb.ToString();

                    //using (SqlCommand command = new SqlCommand(sql, connection))
                    //{
                    //    using (SqlDataReader reader = command.ExecuteReader())
                    //    {
                    //        while (reader.Read())
                    //        {
                    //            Console.WriteLine("{0} {1}", reader.GetString(0), reader.GetString(1));
                    //        }
                    //    }
                    //}
                }
            }
            catch (SqlException e)
            {
                ViewBag.Message = e.ToString();
            }

            return View();
        }
    }
}
System.Data.SqlClientには参照設定が必要なのでプロジェクトに追加します。
プロジェクトを右クリックして「NuGet パッケージの管理」をクリック。
「参照」で「System.Data.SqlClient」を検索してインストール。
発行すると「Connetion success!!!!」と出たので接続できたみたいです。