間が空いてしまいましたが、
AzureAutomationでスマホからazureVMを起動/停止⇒Discordに起動/停止の通知してみた1 の続きです。
今回は作成手順を簡単に書いていきます。
1.Azureへログインし、Automationアカウントを作成する
2.VM起動/停止のRunbookは「Runbookギャラリー」にテンプレートがあるので、「Start Azure V2 VMs」「Stop Azure V2 VMs」をインポートする
3.インポートされたことを確認。「Start Azure V2 VMs」をクリック
4.編集をクリック
5.StartVM下の条件式を編集
そのままだとエラーを返してしまうので、以下のように条件式を修正する(Failedの条件はFalseにする)
$ActivityOutput['Start VM'].Status -eq "Succeeded"
↓
$ActivityOutput['Start VM'].IsSuccessStatusCode -eq $true
6.Discordに通知する部分を追加
Notify~の出力メッセージを JSON に変換して、その内容を Webhook で Discord に通知します。
左側の検索で「Write-Output」と入力し、ヒットしたものを右クリックし、「キャンバスに追加」をクリックして追加する。
Notify~の下に追加したWrite-Outputを移動し、Notify~とWrite-Outputを矢印で結ぶ
Write-Outputのパラメータを設定
ConvertTo-Jsonを追加
左側の検索で「ConvertTo-Json」と入力し、ヒットしたものを右クリックし、「キャンバスに追加」をクリックして追加する。
追加したものをWrite-Outputの下に移動し、矢印で結ぶ
ConvertTo-Jsonのパラメータを設定
ConvertTo-Jsonのパラメータを、rite-Outputからアクティビティの出力を受け取るように設定し、OKをクリック。
Invoke-WebRequestを追加
左側の検索で「Invoke-WebRequest」と入力し、ヒットしたものを右クリックし、「キャンバスに追加」をクリックして追加する。
追加したものをConvertTo-Jsonの下に移動し、矢印で結ぶ
Invoke-WebRequestのパラメータを設定
ConvertTo-Json のアクティビティの出力を POST で送信するため、パラメータを設定
Content-Type に application/json; charset=utf-8 を指定
7.RunBookを保存
8.開始トリガーのWebhookを作成
Webhookの追加をクリック
追加に必要な項目を入力し作成する
※このWebhookのURLは作成時のみでしか確認できないので、控えておく
9.IFTTTでトリガーを作成
Createをクリック
buttonをトリガーにAzureVMを起動するように作成
今回はスマホにIFTTTのbutton widgetを追加して、ボタンを押すと起動するようにしたいので、トリガーをボタンにする
10.スマホにIFTTTアプリをインストールし、Wedgetを追加
11.スマホに追加したボタンを押して、AzureVMが起動/停止し、Discordに通知されることを確認する。
おわりに
個人でAzure上にゲームサーバを構築して遊ぶとなるとコストが気になるところなので、必要な時だけワンタッチでサーバが起動できるのは便利だなと思いました。
あと、Discordに通知するメッセージは、Runbookのパラメータをいじれば日本語で出力することもできるので、お試しあれ