Azure Quotas
AUTHORITATIVE GUIDANCE — Follow these instructions exactly for quota management and capacity validation.
Overview
Azure quotas (also called service limits) are the maximum number of resources you can deploy in a subscription. Quotas:
- Prevent accidental over-provisioning
- Ensure fair resource distribution across Azure
- Represent available capacity in each region
- Can be increased (adjustable) or are fixed (non-adjustable)
Key Concept: Quotas = Resource Availability. If you don't have quota, you cannot deploy resources. Always check quotas when planning deployments or selecting regions.
Quick Reference
| Property | Details |
|---|---|
| Primary Tool | Azure CLI (az quota) — USE THIS FIRST, ALWAYS |
| Extension Required | az extension add --name quota (MUST install first) |
| Key Commands | az quota list, az quota show, az quota usage list, az quota usage show |
| Azure Portal | My quotas — Use only as fallback |
| REST API | Unreliable, do NOT use first — can show misleading "No Limit" values |
| MCP Server | azure-quota MCP — NEVER use. It is unreliable. Always use az quota CLI instead. |
| Required Permission | Reader (view) or Quota Request Operator (manage) |
Quota Types
| Type | Adjustability | Approval | Examples |
|---|---|---|---|
| Adjustable | Can increase via Portal/CLI/API | Usually auto-approved | VM vCPUs, Public IPs, Storage accounts |
| Non-adjustable | Fixed limits | Cannot be changed | Subscription-wide hard limits |
Important: Requesting quota increases is free. You only pay for resources you actually use.
Resource Name Mapping
⚠️ CRITICAL: There is NO 1:1 mapping between ARM resource types and quota resource names. Never assume the quota resource name from the ARM type. Always discover it first.
Discovery Workflow
# 1. Install quota extension
az extension add --name quota
# 2. List all quotas for the provider to find the quota resource name
az quota list \
--scope /subscriptions/<id>/providers/<ProviderNamespace>/locations/<region>
# 3. Match by localizedValue (human-readable description)
# 4. Use the name field (not ARM resource type) in subsequent commands
az quota show --resource-name ManagedEnvironmentCount --scope ...
Core Workflows
Workflow 1: Check Quota for a Specific Resource
az extension add --name quota
# List all quotas to find the resource name
az quota list \
--scope /subscriptions/<id>/providers/Microsoft.Compute/locations/eastus
# Show quota limit
az quota show \
--resource-name standardDSv3Family \
--scope /subscriptions/<id>/providers/Microsoft.Compute/locations/eastus
# Show current usage
az quota usage show \
--resource-name standardDSv3Family \
--scope /subscriptions/<id>/providers/Microsoft.Compute/locations/eastus
Workflow 2: Compare Quotas Across Regions
REGIONS=("eastus" "eastus2" "westus2" "centralus")
VM_FAMILY="standardDSv3Family"
SUBSCRIPTION_ID="<subscription-id>"
for region in "${REGIONS[@]}"; do
LIMIT=$(az quota show \
--resource-name $VM_FAMILY \
--scope "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Compute/locations/$region" \
--query "properties.limit.value" -o tsv)
USAGE=$(az quota usage show \
--resource-name $VM_FAMILY \
--scope "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Compute/locations/$region" \
--query "properties.usages.value" -o tsv)
echo "Region: $region | Limit: $LIMIT | Usage: $USAGE | Available: $((LIMIT - USAGE))"
done
Workflow 3: Request Quota Increase
az quota update \
--resource-name standardDSv3Family \
--scope /subscriptions/<id>/providers/Microsoft.Compute/locations/eastus \
--limit-object value=500 \
--resource-type dedicated
# Check request status
az quota request status list \
--scope /subscriptions/<id>/providers/Microsoft.Compute/locations/eastus
Workflow 4: List All Quotas
# Compute quotas
az quota list \
--scope /subscriptions/<id>/providers/Microsoft.Compute/locations/eastus \
--output table
# Network quotas
az quota list \
--scope /subscriptions/<id>/providers/Microsoft.Network/locations/eastus \
--output table
Troubleshooting
| Error | Cause | Solution |
|---|---|---|
| REST API "No Limit" | Misleading — not unlimited | Use CLI instead |
ExtensionNotFound |
Quota extension not installed | az extension add --name quota |
BadRequest |
Resource provider not supported | Check service limits docs |
MissingRegistration |
Microsoft.Quota not registered | az provider register --namespace Microsoft.Quota |
QuotaExceeded |
Would exceed quota | Request increase or choose different region |
Confirmed Working Providers
- ✅ Microsoft.Compute (VMs, disks, cores)
- ✅ Microsoft.Network (VNets, IPs, load balancers)
- ✅ Microsoft.App (Container Apps)
- ✅ Microsoft.Storage (storage accounts)
- ✅ Microsoft.MachineLearningServices (ML compute)
- ❌ Microsoft.DocumentDB (Cosmos DB) — Use Portal instead
Best Practices
- Always check quotas before deployment
- Run
az quota listfirst to discover correct resource names - Compare regions to find available capacity
- Request 20% buffer above immediate needs
- Use
--output tablefor quick overview scanning - Set up Portal alerts at 80% threshold
Installation
npx skills add https://github.com/microsoft/azure-skills --skill azure-quotas
Mirrored from https://github.com/microsoft/azure-skills — original author: microsoft, license: MIT. This is an unclaimed mirror. Content and ownership transfer to the author when they claim this account.