テンプレートを使用し、Web アプリと Redis Cache を作成する

このトピックでは、Azure Web アプリと Redis Cache をデプロイする Azure リソース マネージャーのテンプレートを作成する方法について説明します。 さらに、デプロイ対象のリソースを定義する方法と、デプロイの実行時に指定されるパラメーターを定義する方法について説明します。 このテンプレートは、独自のデプロイに使用することも、要件に合わせてカスタマイズすることもできます。

テンプレートの作成の詳細については、「 Authoring Azure Resource Manager Templates (Azure リソース マネージャー テンプレートのオーサリング)」を参照してください。

完全なテンプレートについては、「 Web アプリと Redis Cache のテンプレート」を参照してください。

デプロイ対象

このテンプレートでは、以下をデプロイします。

  • Azure Web アプリ
  • Azure Redis Cache。

デプロイメントを自動的に実行するには、次のボタンをクリックします。

Azure へのデプロイ

指定するパラメーター

Azure リソース マネージャーを使用して、テンプレートのデプロイ時に値を指定するパラメーターを定義します。 テンプレートには、すべてのパラメーター値を含む Parameters という名前のセクションがあります。 これらの値のパラメーターを定義する必要があります。これらの値は、デプロイするプロジェクトやデプロイ先の環境に応じて異なります。 常に同じ値に対してはパラメーターを定義しないでください。 テンプレート内のそれぞれのパラメーターの値は、デプロイされるリソースを定義するために使用されます。

デプロイ中にユーザーが指定できる値を指定するには、パラメーターを定義するときに allowedValues フィールドを使用します。 defaultValue フィールドは、デプロイ中に値が指定されなかった場合にパラメーターに割り当てる値を指定するために使用します。

テンプレートに含まれるそれぞれのパラメーターについて説明します。

siteName

作成する Web アプリの名前。

"siteName":{
  "type":"string"
}

hostingPlanName

Web アプリをホストするために使用する App Service プランの名前。

"hostingPlanName":{
  "type":"string"
}

sku

ホスティング プランの価格レベル。

"sku": {
  "type": "string",
  "allowedValues": [
    "F1",
    "D1",
    "B1",
    "B2",
    "B3",
    "S1",
    "S2",
    "S3",
    "P1",
    "P2",
    "P3",
    "P4"
  ],
  "defaultValue": "S1",
  "metadata": {
    "description": "The pricing tier for the hosting plan."
  }
}

テンプレートでは、このパラメーターに指定できる値を定義します。値が指定されない場合は既定値 (S1) が割り当てられます。

workerSize

ホスティング プランのインスタンス サイズ (小、中、または大)。

"workerSize":{
  "type":"string",
  "allowedValues":[
    "0",
    "1",
    "2"
  ],
  "defaultValue":"0"
}

テンプレートには、このパラメーターに指定できる値 (0、1、または 2) を定義します。値が指定されない場合は既定値 (0) が割り当てられます。 値はそれぞれ、小、中、および大に対応しています。

cacheSKUName

新しい Azure Redis Cache の価格レベルです。

"cacheSKUName": {
  "type": "string",
  "allowedValues": [
    "Basic",
    "Standard"
  ],
  "defaultValue": "Basic",
  "metadata": {
    "description": "The pricing tier of the new Azure Redis Cache."
  }
},

テンプレートでは、このパラメーターに指定できる値 (Basic または Standard) を定義します。値が指定されない場合は既定値 (Basic) が割り当てられます。 Basic では、複数のサイズを最大 53 GB まで使用できる 1 つのノードが提供されます。 Standard では、複数のサイズを最大 53 GB まで使用できる 2 つのノード (プライマリとレプリカ) が提供され、99.9% の SLA が実現されます。

cacheSKUFamily

SKU のファミリです。

"cacheSKUFamily": {
  "type": "string",
  "allowedValues": [
    "C"
  ],
  "defaultValue": "C",
  "metadata": {
    "description": "The family for the sku."
  }
},

cacheSKUCapacity

新しい Azure Redis Cache インスタンスのサイズです。

"cacheSKUCapacity": {
  "type": "int",
  "allowedValues": [
    0,
    1,
    2,
    3,
    4,
    5,
    6
  ],
  "defaultValue": 0,
  "metadata": {
    "description": "The size of the new Azure Redis Cache instance. "
  }
}

テンプレートには、このパラメーターに指定できる値 (0、1、2、3、4、5、または 6) を定義します。値が指定されない場合は既定値 (1) が割り当てられます。 これらの数値はキャッシュ サイズに対応します (0 = 250 MB、1 = 1 GB、2 = 2.5 GB、3 = 6 GB、4 = 13 GB、5 = 26 GB、6 = 53 GB)。

名前用の変数

このテンプレートでは、リソースの名前を作成する変数を使用します。 uniqueString 関数を使用し、リソース グループの ID に基づく値を構築します。

"variables": {
  "hostingPlanName": "[concat('hostingplan', uniqueString(resourceGroup().id))]",
  "webSiteName": "[concat('webSite', uniqueString(resourceGroup().id))]",
  "cacheName": "[concat('cache', uniqueString(resourceGroup().id))]"
},

デプロイ対象のリソース

App Service プラン

Web アプリをホストするためのサービス プランを作成します。 hostingPlanName パラメーターに、プランの名前を指定します。 プランの場所は、リソース グループに使用される場所と同じになります。 価格レベルと worker サイズは sku パラメーターと workerSize パラメーターで指定されます。

{
  "apiVersion": "2015-08-01",
  "name": "[parameters('hostingPlanName')]",
  "type": "Microsoft.Web/serverfarms",
  "location": "[resourceGroup().location]",
  "sku": {
    "name": "[parameters('sku')]",
    "capacity": "[parameters('workerSize')]"
  },
  "properties": {
    "name": "[parameters('hostingPlanName')]"
  }
},

Redis Cache

Web アプリで使用される Azure Redis Cache を作成します。 キャッシュの名前は cacheName 変数で指定されます。

テンプレートによって、リソース グループと同じ場所にキャッシュが作成されます。

{
  "name": "[variables('cacheName')]",
  "type": "Microsoft.Cache/Redis",
  "location": "[resourceGroup().location]",
  "apiVersion": "2015-08-01",
  "dependsOn": [ ],
  "tags": {
    "displayName": "cache"
  },
  "properties": {
    "sku": {
      "name": "[parameters('cacheSKUName')]",
      "family": "[parameters('cacheSKUFamily')]",
      "capacity": "[parameters('cacheSKUCapacity')]"
    }
  }
}

Web アプリ

webSiteName 変数で指定された名前で Web アプリを作成します。

Redis Cache との連動を可能にするアプリ設定プロパティで Web アプリが構成されることに注意してください。 このアプリ設定は展開時に指定された値に基づいて動的に作成されます。

{
  "apiVersion": "2015-08-01",
  "name": "[variables('webSiteName')]",
  "type": "Microsoft.Web/sites",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Web/serverFarms/', variables('hostingPlanName'))]",
    "[concat('Microsoft.Cache/Redis/', variables('cacheName'))]"
  ],
  "tags": {
    "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('hostingPlanName'))]": "empty",
    "displayName": "Website"
  },
  "properties": {
    "name": "[variables('webSiteName')]",
    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"
  },
  "resources": [
    {
      "apiVersion": "2015-08-01",
      "type": "config",
      "name": "appsettings",
      "dependsOn": [
        "[concat('Microsoft.Web/Sites/', variables('webSiteName'))]",
        "[concat('Microsoft.Cache/Redis/', variables('cacheName'))]"
      ],
      "properties": {
        "CacheConnection": "[concat(variables('cacheName'),'.redis.cache.windows.net,abortConnect=false,ssl=true,password=', listKeys(resourceId('Microsoft.Cache/Redis', variables('cacheName')), '2015-08-01').primaryKey)]"
      }
    }
  ]
}

デプロイを実行するコマンド

リソースを Azure にデプロイするには、Azure アカウントにログインし、Azure リソース マネージャー モジュールを使用する必要があります。 Azure リソース マネージャーを Azure PowerShell または Azure CLI で使用する方法については、次のトピックを参照してください。

次の例では、指定した名前のアカウントにリソース グループが既にあるものと想定しています。

PowerShell

New-AzureRmResourceGroupDeployment -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-web-app-with-redis-cache/azuredeploy.json -ResourceGroupName ExampleDeployGroup

Azure CLI

azure group deployment create --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-web-app-with-redis-cache/azuredeploy.json -g ExampleDeployGroup