Azure DevOpsで用意されたApp Serviceは、プランが「S1」に設定されていて、個人で毎月支払うには使うにはまぁまぁ高めのプランになっている。 費用を抑えたいので変更する。
前提
- Azure DevOpsのプロジェクトを作成済み
container-webapp-template.jsonの確認
DevOpsのプロジェクトを作成してソースを確認すると、container-webapp-template.json
が用意されていて、その中でWebアプリのプラン(App Service Plan)は下記のように定義されていた。
{ "type": "Microsoft.Web/serverfarms", "sku": { "Tier": "[first(skip(split(parameters('sku'), ' '), 1))]", "Name": "[first(split(parameters('sku'), ' '))]" }, "kind": "linux", "name": "[parameters('hostingPlanName')]", "apiVersion": "2016-09-01", "location": "[resourceGroup().location]", "properties": { "name": "[parameters('hostingPlanName')]", "workerSizeId": "0", "reserved": true, "numberOfWorkers": "1", "hostingEnvironment": "" } },
sku
のName
、Tier
の部分が主にWebアプリのプランの価格レベルで、それに指定されたパラメーターはcontainer-webapp-template.json
の先頭に、
"sku": { "defaultValue": "Standard", "type": "String" },
と定義されていた。
Webアプリテンプレートの修正
であれば、価格レベルのパラメーターを修正すればいいのかと思い、
"sku": { "defaultValue": "B1 Basic", "type": "String" },
のように修正してビルドしてみたけど、価格レベルが変わらなかったので、実際の価格レベルの定義を参考にしてみた。
「対象のプランを選択」 → 「テンプレートのエクスポート」を選択する。
sku
には5つ設定がありますな。その内容をcontainer-webapp-template.json
に上書きした。
ついでにapiVersion
の最新化と、properties
も過不足があるので、上書きしてみた結果が下記の通り。
{ "type": "Microsoft.Web/serverfarms", "apiVersion": "2018-02-01", "name": "[parameters('hostingPlanName')]", "location": "[resourceGroup().location]", "sku": { "name": "B1", "tier": "Basic", "size": "B1", "family": "B", "capacity": 1 }, "kind": "linux", "properties": { "perSiteScaling": false, "maximumElasticWorkerCount": 1, "isSpot": false, "reserved": true, "isXenon": false, "hyperV": false, "targetWorkerCount": 0, "targetWorkerSizeId": 0 } },
この状態でビルドしてみるとWebアプリのプラン価格レベルが「S1(現時点で約9,000円)」から「B1(現時点で約1,500円)」に変更されている事を確認できた。 価格レベルを「F1(無料)」に変更することも可能だけど、今回はカスタムドメインを使用できる最低価格レベルの「B1」を選択した。
参考
container-webapp-template.json
はDevOpsプロジェクト作成直後はapiVersionが古かったり、間違っていたりするので、Define resources in Azure Resource Manager templatesを参考に修正した方が良さそう。