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

この記事では、Azure Web アプリと Azure Cache for Redis をデプロイする Azure Resource Manager のテンプレートを作成する方法について説明します。 次のデプロイの詳細について説明します。

  • デプロイするリソースを定義する方法
  • デプロイの実行時に指定されるパラメーターの定義方法

このテンプレートは、独自のデプロイに使用することも、要件に合わせてカスタマイズすることもできます。

テンプレートの作成の詳細については、「 Azure Resource Manager のテンプレートの作成」を参照してください。 キャッシュ リソースの種類の JSON 構文とプロパティについては、「Microsoft.Cache resource types (Microsoft.Cache リソースの種類)」を参照してください。

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

デプロイ対象

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

  • Azure Web アプリ
  • Azure Cache for Redis

デプロイを自動的に実行するには、次のボタンを選択します。

Deploy to 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"
}

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

cacheSKUName

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

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

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

cacheSKUFamily

SKU のファミリです。

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

cacheSKUCapacity

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

Basic および Standard ファミリの場合:

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

Premium の値キャッシュ容量の定義は同じですが、許可される値が 0 から 6 ではなく 1 から 5 です。

テンプレートでは、このパラメーターに許可される整数値が定義されます。 (Basic および Standard ファミリでは 0 から 6、Premium ファミリでは 1 から 5)。 値が指定されないと、テンプレートによって既定値 (Basic と Standard では 0、Premium では 1) が割り当てられます。

値は次のキャッシュ サイズに対応します。

Basic および Standard
キャッシュ サイズ
Premium
キャッシュ サイズ
0 250 MB (既定) 該当なし
1 1 GB 6 GB (既定)
2 2.5 GB 13 GB
3 6 GB 26 GB
4 13 GB 53 GB
5 26 GB 120 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')]"
  }
},

Azure Cache for Redis

Web アプリで使用される Azure Cache for Redis を作成します。 キャッシュの名前は 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 アプリ (Azure Cache for Redis)

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

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

{
  "apiVersion": "2015-08-01",
  "name": "[variables('webSiteName')]",
  "type": "Microsoft.Web/sites",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Web/serverFarms/', variables('hostingPlanName'))]"
  ],
  "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('cacheHostName'),'.redis.cache.windows.net,abortConnect=false,ssl=true,password=', listKeys(resourceId('Microsoft.Cache/Redis', variables('cacheName')), '2015-08-01').primaryKey)]"
      }
    }
  ]
}

Web アプリ (RedisEnterprise)

RedisEnterprise の場合、リソースの種類は少し異なるので、listKeys を行なう方法は違います。

{
  "apiVersion": "2015-08-01",
  "name": "[variables('webSiteName')]",
  "type": "Microsoft.Web/sites",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Web/serverFarms/', variables('hostingPlanName'))]"
  ],
  "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/RedisEnterprise/databases/', variables('cacheName'), "/default")]",
      ],
      "properties": {
       "CacheConnection": "[concat(variables('cacheHostName'),abortConnect=false,ssl=true,password=', listKeys(resourceId('Microsoft.Cache/RedisEnterprise', variables('cacheName'), 'default'), '2020-03-01').primaryKey)]"
      }
    }
  ]
}

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

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

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

PowerShell

New-AzResourceGroupDeployment -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.web/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/quickstarts/microsoft.web/web-app-with-redis-cache/azuredeploy.json -g ExampleDeployGroup