📝

[Azure] 101-cosmosdb-webapp テンプレート読み解き

2020/12/04に公開

はじめに

Azure QuickStart Templates を読み込んで勉強しよう! ということで、アウトプットもしてみます。

今回の読み解き対象

Create an Azure Cosmos DB account and Web App and deploy web app from GitHub

テンプレートの概要

こちらのテンプレートをデプロイすると、Cosmos DB および GitHub から clone してきた .NET Core の Web アプリケーションが Web Apps 上にデプロイされます。

読み解く

前半の "parameters": から始まる部分では、テンプレート内で使われるパラメータ (変数) の設定です。テンプレートのデプロイ時に選択肢として表示させたりすることができます。Tier の選択肢などもありますね。

azuredeploy.json
    "appServicePlanTier": {
      "type": "string",
      "defaultValue": "F1",
      "allowedValues": [
        "F1",
        "D1",
        "B1",
        "B2",
        "B3",
        "S1",
        "S2",
        "S3",
        "P1",
        "P2",
        "P3",
        "P4"
      ],
      "metadata": {
        "description": "App Service Plan's pricing tier. Details at https://azure.microsoft.com/en-us/pricing/details/app-service/"
      }
    },

デプロイするアプリケーションの GitHub アドレスは下記の箇所で設定

azuredeploy.json
    "repositoryURL": {
      "type": "string",
      "defaultValue": "https://github.com/Azure-Samples/cosmos-dotnet-core-todo-app.git",
      "metadata": {
        "description": "The URL for the GitHub repository that contains the project to deploy."
      }
    },

その後、"resources": から始まるセクションで、Web Apps の作成および Cosmos DB の作成のための記述があります。

ここで面白いなと思ったのは、下記の個所です。

azuredeploy.json
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "siteConfig": {
          "appSettings": [
            {
              "name": "CosmosDb:Account",
              "value": "[reference(resourceId('Microsoft.DocumentDb/databaseAccounts/', variables('cosmosAccountName'))).documentEndpoint]"
            },
            {
              "name": "CosmosDb:Key",
              "value": "[listKeys(resourceId('Microsoft.DocumentDb/databaseAccounts', variables('cosmosAccountName')), '2020-04-01').primaryMasterKey]"
            },
            {
              "name": "CosmosDb:DatabaseName",
              "value": "[parameters('DatabaseName')]"
            },
            {
              "name": "CosmosDb:ContainerName",
              "value": "[parameters('ContainerName')]"
            }
          ]
        }

ここでは、作成した Cosmos DB のアカウント情報を取得してきて、デプロイした Web Apps の Application Settings に入れています。

こうすることで、アプリ側の appsettings.json を変えなくても良いようになっているのですね。

リファレンスとしては、下記のドキュメントが参考になると思います。

最後に

Azure QuickStart Templates は、Azure を勉強するにあたっては結構宝の山だとも思うので、今後も面白そうなものを読み解いてはアウトプットしていきたいな、と思います。

Discussion