Azure無料サービスの仮想マシン

前回Visual StudioのDev Essentialsが使えるようになったので、無料クレジット枠が手に入ったのですが、このクレジットを使わずに12か月の無料サービスとして提供されている仮想マシンを使ってみました。その時の設定などを書きたいと思います。

Linux版とWindows版がそれぞれ別々に提供されていますので、UbuntuでもCentOSでもWindows Serverでも好きなのを選べます。私はとりあえずUbuntu16.04にしました。

リージョンは制限が無いので東日本にしました。

仮想マシンのサイズはB1S Standardを選択します。価格が普通に表示されるので本当に無料か心配になりますが問題ありません。

注意すべきはストレージです。管理ディスク用のOSディスクサイズを64GiB (P6) Freeに変更します。せっかく仮想マシンを無料にしてもストレージが有料だったら課金されてしまうからです。なので、ブート診断も無効にして診断用のストレージを使わないようにします。

これでオール無料で仮想マシンを稼働させることが出来ます。

実際に無料になっているかどうかはサブスクリプションの概要で確認することが出来ます。以下のように無料サービス分は別に表示されます。

仮想マシンと管理ディスクの他にパブリックIPが無料サービスの対象になっています。仮想マシンとパブリックIPは時間課金、管理ディスクは1日単位での課金のようです。したがって複数作って不要なら消去して、という使い方で無料を維持することも可能です。

Visual Studio Dev Essentialsを使い始めました

いつ始めようか迷っていたVisual Studio Dev Essentialsをようやく使うことにしました。

いずれ利用するつもりのMicrosoft パートナーネットワークのアクションパックに申し込む前に、これを使って色々調べようと思います。

ただ、Azureの3000円/月の無料枠を使うつもりでしたが、ここにあるように去年で廃止されていました。新しい無料枠はリソースの種類が決まっているようです。仮想マシンがB1Sサイズなのはともかく、管理ディスクがSSDで64GB使えるのはうれしいところです。

実際にDev Essentialsを申し込む場合に、事前に用意するのは以下です。

  • クレジットカード
  • 携帯電話
  • マイクロソフトアカウント

以下の手順で申し込みます。

1. Visual StudioのDev Essentialsページから「今すぐ参加またはアクセス」をクリックします。
2. サインイン画面になるので、マイクロソフトアカウントのユーザー名とパスワードを入力します。
3. My Visual StudioのHome画面に飛ぶので、ここにある「Azure」の「アクティブ化」をクリックします。
4. Azureの契約情報を入力していきます。

  • 国/地域
  • 電子メールアドレス
  • 電話
  • 名の読み方
  • 姓の読み方

5. 電話による本人確認では電話番号を入力してテキストメッセージ(SMS)か電話する(自動音声)を選択します。
6. 選択した方法で確認コードが送られてきます。
7. 6桁の数字による確認コードを入力して「コードの確認」をクリックします。
8. クレジットカードや住所などの情報を入力します。
9. 初期のままだと実際に課金されることは無いので心配は不要です。

  • カード番号
  • 有効期限
  • セキュリティコード
  • クレジットカードの名義
  • 郵便番号
  • 都道府県
  • 市区町村
  • 住所1

10. アグリーメントとして同意のチェックボックスをチェックします。
11. 最後に「サインアップ」をクリックします。

情報確認とサブスクリプション設定が完了すると、Azureのポータル画面に飛びます。この時、同時に「Azureの無料アカウントへようこそ」というメールも送信されます。

ただし、この段階だとまだポータル上でサブスクリプションIDが確認できませんでした。不思議に思って一旦ログアウトし、入りなおしたらきちんと登録されていました。

これで使い道自由の22,500円分の無料クレジットと一部のリソースが自由に使えるようになりました。

Azure Durable FunctionsのNuGetでハマった

Azure Durable Functions(ランタイム2.0)からSignalRを使うためにNuGet参照を行おうとしたら参照方法が変わっていたのでハマりました。
ライブラリの変更だけでなく、アセンブリ情報参照用のファイルまで変更する必要がありました。

公式ドキュメントによるとランタイム1.0ではproject.jsonファイルに以下のように書くのですが、

{
  "frameworks": {
    "net46":{
      "dependencies": {
        "Microsoft.AspNet.SignalR": "2.2.2"
      }
    }
   }
}

ランタイム2.0ではfunction.projと言うファイル名にして以下のように書きます。

<Project Sdk="Microsoft.NET.Sdk"> 
  <PropertyGroup> 
    <TargetFramework>netstandard2.0</TargetFramework> 
  </PropertyGroup> 
  <ItemGroup> 
    <PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.0.0-alpha2-final"/> 
  </ItemGroup> 
</Project> 

公式ドキュメントではこの書き方を見つけることが出来ず、ここを見てようやく理解しました。

Durable Functionsのようなプレビュー版は試行錯誤の繰り返しです。