템플릿을 사용하여 Azure Cache for Redis가 포함된 웹앱 만들기

이 문서에서는 Azure Cache for Redis가 포함된 Azure 웹앱을 배포하는 Azure Resource Manager 템플릿을 만드는 방법에 대해 알아봅니다. 다음 배포 세부 정보를 알아봅니다.

  • 배포되는 리소스를 정의하는 방법
  • 배포가 실행될 때 지정되는 매개 변수를 정의하는 방법

배포를 위해 이 템플릿을 사용하거나 요구 사항에 맞게 사용자 지정을 할 수 있습니다.

템플릿을 만드는 더 자세한 내용은 Azure Resource Manager 템플릿 작성하기를 참조하십시오. 캐시 리소스 종류의 JSON 구문 및 속성에 대해 알아보려면 Microsoft.Cache 리소스 종류를 참조하세요.

전체 템플릿은 Azure Cache for Redis 템플릿이 포함된 웹앱을 참조하세요.

배포할 내용

이 템플릿에서 다음을 배포합니다.

  • Azure 웹앱
  • Azure Cache for Redis

배포를 자동으로 실행하려면 다음 단추를 선택합니다.

Deploy to Azure

지정할 매개변수

Azure 리소스 관리자와 함께 템플릿을 배포할 때 지정하고자 하는 값으로 매개 변수를 정의합니다. 템플릿은 모든 매개 변수 값이 포함 된 매개 변수라는 섹션을 포함합니다. 배포하는 프로젝트 또는 배포 중인 환경에 따라 달라지는 값에 대한 매개 변수를 정의해야 합니다. 상수인 값에 대한 매개 변수를 정의하지 마세요. 각 매개 변수 값은 배포되는 리소스를 정의하는 템플릿에 사용됩니다.

매개 변수를 정의할 때는 allowedValues 필드를 사용하여 배포 중에 사용자가 제공할 수 있는 값을 지정합니다. 배포 중에 값이 제공되지 않으면 defaultValue 필드를 사용하여 매개 변수에 값을 할당합니다.

템플릿에서 각 매개 변수에 대해 설명할 것입니다.

siteName

만들려는 웹앱의 이름입니다.

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

hostingPlanName

웹앱을 호스팅하는 데 사용하는 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 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은 최대 53GB를 사용할 수 있는 다양한 크기의 단일 노드를 제공합니다. Standard는 최대 53GB를 사용할 수 있으며 99.9%의 SLA를 제공하는 다양한 크기의 2-노드 주/복제본을 제공합니다.

cacheSKUFamily

SKU 제품군입니다.

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

cacheSKUCapacity

새 Azure Cache for Redis 인스턴스의 크기입니다.

기본 및 표준 제품군의 경우:

    "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. "
      }
    }

허용되는 값이 0~6이 아닌 1~5까지 실행되는 경우를 제외하고 프리미엄 값 캐시 용량은 동일하게 정의됩니다.

템플릿은 이 매개 변수에 허용되는 정수 값을 정의합니다(기본 및 표준 제품군의 경우 0~6, 프리미엄 제품군의 경우 1~5). 값을 지정하지 않으면 템플릿은 기본 및 표준에 대해 기본값 0을 할당하고 프리미엄에 대해 1을 할당합니다.

값은 다음 캐시 크기에 해당합니다.

기본 및 표준
캐시 크기
Premium
캐시 크기
0 250MB(기본값) 해당 없음
1 1GB 6GB(기본값)
2 2.5GB 13GB
3 6GB 26GB
4 13GB 53GB
5 26GB 120GB
6 53GB 해당 없음

이름에 대한 변수

이 템플릿은 리소스 이름을 생성하기 위해 변수를 사용합니다. uniqueString 함수를 사용하여 리소스 그룹 ID를 기준으로 값을 생성합니다.

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

배포할 리소스

App Service 계획

웹앱을 호스팅하기 위한 서비스 계획을 만듭니다. hostingPlanName 매개 변수를 통해 계획의 이름을 제공합니다. 계획의 위치는 리소스 그룹에 사용된 위치와 동일합니다. 가격 책정 계층 및 작업자 크기는 skuworkerSize 매개 변수에서 지정됩니다.

{
  "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

웹앱과 함께 사용되는 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')]"
    }
  }
}

웹앱(Azure Cache for Redis)

webSiteName 변수에 지정된 이름으로 웹앱을 만듭니다.

웹앱은 Azure Cache for Redis에서 작동할 수 있게 하는 앱 설정 속성으로 구성됩니다. 앱 설정은 배포 중에 제공된 값을 기반으로 동적으로 만들어집니다.

{
  "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)]"
      }
    }
  ]
}

웹앱(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 PowerShell 또는 Azure CLI과 함께 Azure 리소스 관리자를 사용하는 방법을 알아보려면 참조하십시오.

다음 예제에서는 지정된 이름을 가진 계정에 리소스 그룹을 이미 보유했다고 가정합니다.

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