Quickstart: Create an Azure Content Delivery Network profile and endpoint - ARM template
Important
Azure CDN Standard from Microsoft (classic) will be retired on September 30, 2027. To avoid any service disruption, it is important that you migrate your Azure CDN Standard from Microsoft (classic) profiles to Azure Front Door Standard or Premium tier by September 30, 2027. For more information, see Azure CDN Standard from Microsoft (classic) retirement.
Azure CDN from Edgio will be retired on Januray 15, 2025. You must migrate your workload to Azure Front Door before this date to avoid service disruption. For more information, see Azure CDN from Edgio retirement FAQ.
Get started with Azure Content Delivery Network by using an Azure Resource Manager template (ARM template). The template deploys a profile and an endpoint.
An Azure Resource Manager template is a JavaScript Object Notation (JSON) file that defines the infrastructure and configuration for your project. The template uses declarative syntax. You describe your intended deployment without writing the sequence of programming commands to create the deployment.
If your environment meets the prerequisites and you're familiar with using ARM templates, select the Deploy to Azure button. The template opens in the Azure portal.
Prerequisites
If you don't have an Azure subscription, create an Azure free account before you begin.
Review the template
The template used in this quickstart is from Azure Quickstart Templates.
This template is configured to create a:
- Profile
- Endpoint
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.5.6.12127",
"templateHash": "4893693976717968636"
}
},
"parameters": {
"profileName": {
"type": "string",
"metadata": {
"description": "Name of the CDN Profile"
}
},
"endpointName": {
"type": "string",
"metadata": {
"description": "Name of the CDN Endpoint, must be unique"
}
},
"originUrl": {
"type": "string",
"metadata": {
"description": "Url of the origin"
}
},
"CDNSku": {
"type": "string",
"defaultValue": "Standard_Microsoft",
"allowedValues": [
"Standard_Akamai",
"Standard_Microsoft",
"Standard_Verizon",
"Premium_Verizon"
],
"metadata": {
"description": "CDN SKU names"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"resources": [
{
"type": "Microsoft.Cdn/profiles",
"apiVersion": "2021-06-01",
"name": "[parameters('profileName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('CDNSku')]"
}
},
{
"type": "Microsoft.Cdn/profiles/endpoints",
"apiVersion": "2021-06-01",
"name": "[format('{0}/{1}', parameters('profileName'), parameters('endpointName'))]",
"location": "[parameters('location')]",
"properties": {
"originHostHeader": "[parameters('originUrl')]",
"isHttpAllowed": true,
"isHttpsAllowed": true,
"queryStringCachingBehavior": "IgnoreQueryString",
"contentTypesToCompress": [
"application/eot",
"application/font",
"application/font-sfnt",
"application/javascript",
"application/json",
"application/opentype",
"application/otf",
"application/pkcs7-mime",
"application/truetype",
"application/ttf",
"application/vnd.ms-fontobject",
"application/xhtml+xml",
"application/xml",
"application/xml+rss",
"application/x-font-opentype",
"application/x-font-truetype",
"application/x-font-ttf",
"application/x-httpd-cgi",
"application/x-javascript",
"application/x-mpegurl",
"application/x-opentype",
"application/x-otf",
"application/x-perl",
"application/x-ttf",
"font/eot",
"font/ttf",
"font/otf",
"font/opentype",
"image/svg+xml",
"text/css",
"text/csv",
"text/html",
"text/javascript",
"text/js",
"text/plain",
"text/richtext",
"text/tab-separated-values",
"text/xml",
"text/x-script",
"text/x-component",
"text/x-java-source"
],
"isCompressionEnabled": true,
"origins": [
{
"name": "origin1",
"properties": {
"hostName": "[parameters('originUrl')]"
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Cdn/profiles', parameters('profileName'))]"
]
}
]
}
One Azure resource is defined in the template:
Deploy the template
The Azure CLI
read -p "Enter the location (i.e. eastus): " location
resourceGroupName="myResourceGroupCDN"
templateUri="https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.cdn/cdn-with-custom-origin/azuredeploy.json"
az group create \
--name $resourceGroupName \
--location $location
az deployment group create \
--resource-group $resourceGroupName \
--template-uri $templateUri
PowerShell
$location = Read-Host -Prompt "Enter the location (i.e. eastus)"
$templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.cdn/cdn-with-custom-origin/azuredeploy.json"
$resourceGroupName = "myResourceGroupCDN"
New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri
Portal
Review deployed resources
Sign in to the Azure portal.
Select Resource groups from the left pane.
Select the resource group that you created in the previous section. The default resource group name is myResourceGroupCDN
Verify the following resources were created in the resource group:
Clean up resources
The Azure CLI
When no longer needed, you can use the az group delete command to remove the resource group and all resources contained within.
az group delete \
--name myResourceGroupCDN
PowerShell
When no longer needed, you can use the Remove-AzResourceGroup command to remove the resource group and all resources contained within.
Remove-AzResourceGroup -Name myResourceGroupCDN
Portal
When no longer needed, delete the resource group, content delivery network profile, and all related resources. Select the resource group myResourceGroupCDN that contains the content delivery network profile and endpoint, and then select Delete.
Next steps
In this quickstart, you created a:
- Content delivery network Profile
- Endpoint
To learn more about Azure Content Delivery Network and Azure Resource Manager, continue to the next article: