Home › Cloud › AKS ImagePullBackOff: ACR Access Denied Fix
Intermediate 5 min · September 23, 2026

AKS ImagePullBackOff: ACR Access Denied Fix

Fix AKS ImagePullBackOff by granting AcrPull to the kubelet identity: verify with check-acr, then assign the role at the registry scope..

N
Naren Founder & Principal Engineer

20+ years shipping production backend systems. Written from production experience, not tutorials.

Follow
✓ Production
production tested
September 27, 2026
last updated
2,085
articles · all by Naren
Before you start⏱ 14 min
  • ✓An AKS cluster with kubectl access configured
  • ✓An Azure Container Registry with a pushed image
  • ✓Azure CLI installed with az login completed
 ● Production Incident 🔎 Debug Guide
⚡Quick Answer
  • ImagePullBackOff from ACR means the node kubelet identity lacks permission: same subscription alone grants nothing
  • Confirm the path with az aks check-acr, then compare the live kubelet identity against the role assignment
  • Fix it with one grant: az role assignment create --role AcrPull scoped to the registry
  • Keep imagePullSecrets only as a fallback, and rule out missing tags plus ACR firewall blocks first
✦ Definition~90s read
What is Azure AKS ImagePullBackOff From ACR?

ImagePullBackOff is a Kubernetes pod status meaning the kubelet failed to download the container image and is backing off before retrying. When the registry is Azure Container Registry, the kubelet authenticates with its managed identity and ACR authorizes the pull through Azure RBAC.

★
Picture the ACR as a private warehouse and your AKS nodes as delivery drivers.

The required permission is the AcrPull role on the registry scope. Without it, ACR returns 401 Unauthorized, the kubelet logs Failed to pull image, and the pod waits with growing delays between attempts.

Two identities matter and they are easy to confuse. The cluster identity (control-plane principal) manages Azure resources such as load balancers, disks, and network interfaces. The kubelet identity (one per cluster, exposed via identityProfile.kubeletidentity) is what each node uses to pull images and read secrets.

Pull grants must target the kubelet identity. Grants on the cluster identity look identical in a casual portal glance and fix exactly nothing.

The error has three classic triggers. A missing assignment: nobody ever granted AcrPull, common when the registry was created after the cluster. A stale assignment: the grant points at a previous kubelet object ID after a rebuild, upgrade, or identity rotation.

And lookalikes: an image tag that was never pushed, or an ACR firewall blocking node traffic before auth. All three park pods in the same status with different underlying reasons.

Resolution follows a fixed order: read the pod events, validate with az aks check-acr, compare the live kubelet identity against the assignment, then fix the actual gap — grant the role, push the tag, or open the firewall. Guessing outside that order is how one-line fixes become morning-long incidents.

Plain-English First

Picture the ACR as a private warehouse and your AKS nodes as delivery drivers. ImagePullBackOff means the driver arrived but the door won't open — their badge (the kubelet identity) isn't on the access list (the AcrPull role). The door checks the list, not the org chart. Add the badge to the list. Rebuilding the depot or yelling at the driver changes nothing until the badge is authorized.

You deploy to AKS on a Monday morning and every pod sits in ImagePullBackOff. The image exists — you just pushed it. The registry is in the same subscription, maybe the same resource group. Yet the nodes act like they've never heard of your container. Someone suggests rebuilding the cluster. Someone else blames a typo. Both cost more than the actual fix, which is usually one role assignment.

ImagePullBackOff against Azure Container Registry is a permissions problem wearing a networking costume. The kubelet identity on your nodes must hold the AcrPull role on the registry, and nothing about proximity grants it automatically. Same subscription, same tenant, same team — none of that matters to Azure RBAC. Without the explicit grant, every pull is denied and Kubernetes retries with growing delays.

This error loves to appear right after cluster rebuilds, identity rotations, and subscription moves, because all three silently change which identity pulls. The assignment that worked Friday points at an object ID that no longer exists Monday.

This guide gives you the exact diagnosis order: describe the pod, check the pull path with az aks check-acr, compare identities, and assign the role at the right scope. You'll see a real outage caused by a stale identity, plus the infrastructure-as-code pattern that makes this failure nearly impossible.

What ImagePullBackOff From ACR Actually Signals

ImagePullBackOff is Kubernetes telling you the kubelet tried to fetch the container image, failed, and is waiting longer between retries. The BackOff part is just exponential delay — the useful signal is the pull failure underneath. Against ACR that failure is usually authorization: the node presented its managed identity, ACR checked Azure RBAC, and found no AcrPull grant. The registry answers 401, the kubelet records Failed to pull image, and the pod waits.

This error misleads because it looks environmental. Same subscription, same resource group, recently working — everything suggests the plumbing broke. But Azure RBAC never infers permission from proximity. An AKS cluster and an ACR can share an owner, a subscription, and a VNet while the pull still fails, because the only question ACR asks is whether this specific object ID holds a pull grant on this specific registry scope. Everything else is scenery.

Two other failures wear the same costume. A misspelled tag or an unpushed image produces pull errors with no permission problem at all. An ACR firewall in Deny mode drops node traffic before authentication, which reads as timeouts rather than denials. The discipline is checking all three in order — identity grant, image existence, network path — instead of assuming the first theory. The debug guide below runs exactly that order.

📊 Production Insight
Fleet-wide ImagePullBackOff after a quiet weekend almost always traces to an identity or firewall change nobody deployed: rotations, rebuilds, and policy edits. One team now diffs role assignments nightly and alerts when the kubelet identity's grants change, catching orphaned assignments before Monday's deploys.
🎯 Key Takeaway
The pod can't fetch its image; against ACR that usually means no AcrPull grant — but verify tags and firewall too.

The Kubelet Identity: Finding the Real Puller

The kubelet identity is the managed identity your node pools use for Azure API calls, including registry pulls. It is not the cluster identity — that one belongs to the control plane and manages load balancers and disks. Mixing them up is the most common reason a correct-looking role assignment fails to fix anything: the grant sits on an identity that never pulls. Resolve the real puller first, every time, with the query below.

Object IDs are the trap inside the trap. The kubelet identity's object ID changes when node pools are recreated, when the cluster is rebuilt, and sometimes during upgrades. Any assignment pinned to the old ID becomes a grant for a ghost. The portal doesn't wave a flag; it shows a valid-looking assignment whose principal no longer exists. The only reliable check compares the live identity from az aks show against the assignee on the role assignment, as the snippet demonstrates.

Treat that comparison as the heart of the diagnosis. If the IDs match and AcrPull is present, move on to tags and firewall with confidence. If they differ, you've found the outage: assign AcrPull to the live identity at the registry scope and watch the pods recover within a minute or two. Then fix the process that hardcoded the stale ID so the next rebuild doesn't repeat the incident.

grant-acrpull.shBASH
1
2
3
4
5
6
7
8
9
10
# Who actually pulls? Resolve the live kubelet identity (not the cluster identity)
az aks show --name <CLUSTER> --resource-group <RG> \
  --query "{kubelet:identityProfile.kubeletidentity.objectId, cluster:identity.principalId}" -o table

# What grants does that identity hold on the registry?
ACR_ID=$(az acr show --name <ACR> --query id -o tsv)
az role assignment list --assignee <KUBELET_OBJECT_ID> --scope "$ACR_ID" -o table

# Missing AcrPull? Grant it at the registry scope (least privilege)
az role assignment create --assignee <KUBELET_OBJECT_ID> --role AcrPull --scope "$ACR_ID"
📊 Production Insight
A cluster rebuild once minted a new kubelet identity while every runbook still referenced the old one. The team now resolves the identity dynamically in Terraform outputs, so rebuilds re-grant automatically. Hardcoded principal IDs are a ticking incident.
🎯 Key Takeaway
Resolve the live kubelet object ID and grant AcrPull at the registry scope — never hardcode IDs.

Validating the Pull Path With az aks check-acr

az aks check-acr is the single most underused command in this space. It asks Azure to validate the pull path using the cluster's actual identity and reports success or the precise failure — no pod required, no deploy needed. Run it after cluster creation, after any identity operation, after ACR firewall edits, and inside your pipeline as a post-apply gate. A green result means RBAC and network both pass; a red result names which side failed.

Use it as the branch point in your diagnosis. If check-acr fails, stay on the platform side: compare identities, inspect assignments, check the firewall. If check-acr passes while pods still back off, leave RBAC alone — the problem is in the pod spec, the image reference, or a stale imagePullSecret. This one branch saves the hour teams otherwise spend re-granting roles for a typo.

Note what it doesn't cover. It validates the cluster's default pull identity against the registry, not per-pod imagePullSecrets or cross-tenant scenarios. For secret-based pulls, test the credential directly with a docker login from a throwaway host. For private endpoints and firewall rules, pair check-acr with a look at the effective network rules. The command is a gate, not the whole audit — but as gates go, it's the cheapest thirty seconds in AKS operations.

check-acr-path.shBASH
1
2
3
4
5
6
7
8
9
# End-to-end pull-path validation with the cluster's real identity
az aks check-acr --name <CLUSTER> --resource-group <RG> --acr <ACR_NAME>

# Inspect the registry side: firewall mode and network rules
az acr show --name <ACR> --query "{fw:networkRuleSet.defaultAction, public:publicNetworkAccess}" -o table
az acr network-rule list --name <ACR> -o table

# Inspect the tag side: does the image reference exist at all?
az acr repository show-tags --name <ACR> --repository <REPO> -o table
📊 Production Insight
One platform team added check-acr as a pipeline gate after every cluster apply and caught three would-be outages in a quarter — two orphaned grants, one firewall regression. Each catch cost a minute; each outage would have cost a morning.
🎯 Key Takeaway
check-acr is the branch point: red means platform RBAC or network, green means your pod spec.

imagePullSecrets Fallback: When and How to Use It

imagePullSecrets are the legitimate fallback: a Kubernetes docker-registry secret holding registry credentials, referenced from the pod spec. They shine for third-party registries and cross-tenant pulls where managed identity can't reach. They fail as a primary strategy because every credential rotation is manual — renew the password, update the secret, restart the pods — and whatever step you forget becomes the next outage. The 3 AM version of this bug is always a rotated admin password nobody synced.

If you must use secrets, run them properly. Disable nothing you need, but scope the secret per namespace, name it consistently, and attach it via service accounts so individual pod specs stay clean. Store the actual credential in Key Vault and sync it with an operator rather than pasting passwords into YAML. Most importantly, alert on secret age: a secret older than your rotation period is an incident waiting for a trigger.

Prefer managed identity everywhere Azure-to-Azure. AcrPull on the kubelet identity rotates itself, scopes to the registry, and leaves no password to leak in a manifest. Keep one documented runbook for the secret path — cross-tenant ACR, emergency fallback — and let the identity path carry daily traffic. When pods back off, check which path they're even using before debugging the other one.

acrpull-secret-fallback.shBASH
1
2
3
4
5
6
7
8
9
10
# Create a pull secret (fallback path only) and attach it to the namespace default account
kubectl create secret docker-registry acr-pull-secret \
  --docker-server <ACR>.azurecr.io \
  --docker-username <USERNAME> --docker-password <PASSWORD> \
  --namespace <NS>

kubectl patch serviceaccount default -n <NS> -p '{"imagePullSecrets": [{"name": "acr-pull-secret"}]}'

# Verify which pods actually reference a pull secret
kubectl get pods -n <NS> -o jsonpath='{range .items[*]}{.metadata.name} {"->"} {.spec.imagePullSecrets[*].name}{"\n"}{end}'
📊 Production Insight
A team running secrets as primary auth survived two years, then lost a whole region's pods when an admin-password rotation skipped the secret sync. They migrated to AcrPull the same week. Passwords that humans must remember to rotate are outages with a timer.
🎯 Key Takeaway
Secrets are the fallback for cross-tenant and third-party pulls — sync from Key Vault and alert on age.

When the Firewall, Not RBAC, Blocks the Pull

Networking produces the cruelest variant of this failure because it mimics RBAC while defeating RBAC fixes. An ACR with public access disabled or a default-Deny firewall drops node traffic before authentication happens. The pod events show timeouts and retries rather than clean 401s, so teams keep re-granting roles while packets die at the firewall. Always inspect the registry's network posture when denials don't behave like denials.

The usual setups each have their failure mode. Private endpoints require DNS resolution from the nodes to the registry's private IP — a VNet link or private DNS zone misconfiguration sends pulls into the void. Firewall allowlists require the cluster's egress IPs, which change when NAT gateways or load balancer outbound rules change. Service endpoints require the subnet registered on both sides. Any of these drifting breaks pulls that RBAC can't fix.

Diagnose network-first when check-acr fails but assignments look right, or when events show timeouts instead of unauthorized. List the ACR network rules, confirm the node subnet or egress IP is present, and test DNS from a debug pod. Re-run check-acr after each change — it's the fastest confirmation that the path reopened. And record the network design next to the RBAC design in your runbooks, because the next debugger will otherwise assume the half you documented is the whole story.

check-acr-network.shBASH
1
2
3
4
5
6
7
8
9
# Registry network posture: default action and public access
az acr show --name <ACR> --query "{defaultAction:networkRuleSet.defaultAction, publicAccess:publicNetworkAccess}" -o table

# Which networks are allowlisted?
az acr network-rule list --name <ACR> --query "{ipRules:ipRules[].ipAddressOrRange, vnetRules:virtualNetworkRules[].virtualNetworkResourceId}" -o json

# Test DNS + pull path from inside the cluster with a debug pod
kubectl run acr-debug --rm -it --image=busybox --restart=Never -- nslookup <ACR>.azurecr.io
az aks check-acr --name <CLUSTER> --resource-group <RG> --acr <ACR_NAME>
📊 Production Insight
An egress-IP change once silently invalidated an ACR firewall allowlist, and pulls timed out cluster-wide. The fix took two minutes once diagnosed — but diagnosis took two hours because every runbook said check RBAC first. Network posture now sits beside identity in the same dashboard.
🎯 Key Takeaway
Timeouts mean network; 401s mean RBAC — check ACR firewall and DNS before re-granting roles.

Making AKS-to-ACR Auth Self-Healing With IaC

The durable fix puts the AcrPull assignment in the same infrastructure module as the cluster, resolving the kubelet identity dynamically. In Terraform that means referencing the kubelet object ID output rather than a literal; in Bicep it means chaining the role assignment resource to the cluster's identity profile. Either way, rebuilds re-grant automatically because the assignment follows the identity instead of fossilizing it. Hardcoded principal IDs should fail code review on sight.

Layer verification around the module. A post-apply pipeline step runs az aks check-acr and fails the apply on red. A nightly drift check diffs live assignments against desired state and pages on unexpected change. Image references pin to digests so tags can't drift under running manifests. Together these turn pull auth from tribal knowledge into tested infrastructure.

Keep the fallback documented but distinct. One runbook covers managed-identity pulls (the default path); a separate, shorter runbook covers imagePullSecrets for the registries identity can't reach. Onboard new services to the identity path by default and require justification for secrets. When the next ImagePullBackOff lands, the responder opens the right runbook in the first minute instead of the wrong one in the thirtieth.

⚠ Scope AcrPull to the Registry, Never the Subscription
Never scope the kubelet's AcrPull grant above the registry. A subscription-wide grant lets any compromised node pool pull (and probe) every registry in the subscription. Scope to the registry resource ID, audit quarterly, and treat broader grants as security findings, not conveniences.
📊 Production Insight
Teams that co-locate the assignment with the cluster definition stop having this incident entirely. The holdouts keep a quarterly reminder titled pull auth roulette. Infrastructure follows its incentives: make the safe path the default path and the failure mode starves.
🎯 Key Takeaway
Same-module assignment with dynamic identity plus check-acr gates — pull auth becomes tested infrastructure.
● Production incidentPOST-MORTEMseverity: high

The Upgrade That Quietly Replaced the Pull Identity

Symptom
Every pod scheduled after the upgrade entered ImagePullBackOff with authorization-failed pull events. Older pods already running stayed healthy, which made the failure look deploy-related instead of identity-related. The registry metrics showed a wall of 401 responses from the new nodes.
Assumption
The team assumed the registry was down or the image push had failed, so they re-pushed the image three times and restarted the deployment. When that changed nothing, they assumed a typo in the image name and spent an hour diffing manifests. Nobody questioned the role assignment because the portal still showed an AcrPull grant — for an identity that no longer existed.
Root cause
The node-image upgrade recreated the node pools with a fresh kubelet identity (new object ID). The existing AcrPull role assignment still pointed at the old object ID, so the new nodes had zero registry permissions. The image, the registry, and the manifests were all correct — only the identity behind the pull had changed.
Fix
The fix was a single command: az role assignment create --assignee <NEW_KUBELET_ID> --role AcrPull --scope <ACR_ID>, verified with az aks check-acr. Pods started within a minute. The lasting fix moved the AcrPull assignment into the same Terraform module as the cluster, resolving the kubelet identity as a data output instead of a hardcoded object ID, plus a post-apply check-acr gate in the pipeline.
Key lesson
  • Never hardcode managed-identity object IDs in role assignments. Cluster rebuilds mint new identities silently, and a hardcoded ID keeps pointing at a ghost while the portal display looks reassuring.
  • Run az aks check-acr in the pipeline after every cluster change. A thirty-second gate would have caught this before any workload was scheduled onto the new nodes.
  • Treat identity changes as breaking changes. Rebuilds, rotations, and subscription moves should trigger the same verification rigor as a database migration.
Production debug guideFive checks, in order, that separate RBAC denials from typos and firewalls.5 entries
Symptom · 01
Pods are in ImagePullBackOff and you don't know the pull reason
→
Fix
Run kubectl describe pod <POD> -n <NS> and read the Events section for Failed to pull image plus the reason. Then run kubectl get events -n <NS> --sort-by=.lastTimestamp to see whether every pod or just one node pool is affected — single-pool failures point at node identity, fleet-wide at the registry.
Symptom · 02
You need one test that separates platform RBAC from pod-spec typos
→
Fix
Run az aks check-acr --name <CLUSTER> --resource-group <RG> --acr <ACR_NAME>. It tests the pull path with the cluster's real identity. A failure here confirms the platform path is broken; success means the problem is in your pod spec (wrong image name or secret).
Symptom · 03
The role exists somewhere but pulls still fail
→
Fix
Run az aks show --name <CLUSTER> --resource-group <RG> --query "{kubelet:identityProfile.kubeletidentity.objectId, cluster:identity.principalId}" -o table. Then run az role assignment list --assignee <KUBELET_ID> --scope <ACR_ID> -o table. If the kubelet ID has no AcrPull row, create it with az role assignment create.
Symptom · 04
RBAC looks right but the pull still fails
→
Fix
Run az acr repository show-tags --name <ACR> --repository <REPO> -o table and compare letter-for-letter with the image in your manifest. If the tag is missing, the registry never had it — check CI push logs. Pin digests in production manifests so tags can't drift under you.
Symptom · 05
Pulls time out instead of failing fast with denied
→
Fix
Run az acr show --name <ACR> --query "{fw:networkRuleSet.defaultAction, public:publicNetworkAccess}" and az acr network-rule list --name <ACR>. If defaultAction is Deny, confirm the cluster's egress IPs or VNet are allowlisted. Re-run az aks check-acr after any firewall edit.
AKS ImagePullBackOff From ACR Compared
Root CauseHow to ConfirmFixPrevention
Missing AcrPull role assignmentaz aks check-acr reports failure; no assignment in az role assignment list for the kubelet identityAssign AcrPull to the kubelet identity at the ACR scopeAssign AcrPull in Terraform/Bicep next to the cluster definition
Wrong identity got the roleAssignment exists for the cluster identity but identityProfile.kubeletidentity differsReassign AcrPull to the kubelet object IDResolve the kubelet identity dynamically in automation, never hardcode
Stale imagePullSecretManual docker login with the secret's password fails; secret age predates a rotationRenew credentials and update the Kubernetes secretSync secrets from Key Vault with rotation alerts
Image tag or repo doesn't existaz acr repository show-tags lacks the tag; digest mismatch in deploy specPush the right tag or fix the image referencePin digests in manifests; verify tags in CI before deploy
⚙ Quick Reference
4 commands from this guide
FileCommand / CodePurpose
grant-acrpull.shaz aks show --name <CLUSTER> --resource-group <RG> \The Kubelet Identity
check-acr-path.shaz aks check-acr --name <CLUSTER> --resource-group <RG> --acr <ACR_NAME>Validating the Pull Path With az aks check-acr
acrpull-secret-fallback.shkubectl create secret docker-registry acr-pull-secret \imagePullSecrets Fallback
check-acr-network.shaz acr show --name <ACR> --query "{defaultAction:networkRuleSet.defaultAction, p...When the Firewall, Not RBAC, Blocks the Pull

Key takeaways

1
ImagePullBackOff from ACR almost always means the kubelet identity lacks AcrPull
proximity grants nothing.
2
Target the kubelet identity, not the cluster identity, scoped to the registry resource ID.
3
Validate the whole path with az aks check-acr after every cluster, identity, or firewall change.
4
Rule out missing tags and ACR firewalls before assuming RBAC
timeouts and typos mimic denials.
5
Define the AcrPull assignment in the same IaC module as the cluster with a dynamic identity lookup.
6
Keep imagePullSecrets as a fallback with rotation alerts, not as the primary pull strategy.

Common mistakes to avoid

5 patterns
×

Assuming same-subscription ACR access works without a role assignment

Symptom
AKS and ACR sit in the same subscription, even the same resource group, yet every pull fails. Proximity grants nothing in Azure RBAC — without the assignment, the answer is always denied.
Fix
Assign AcrPull to the kubelet identity explicitly: az role assignment create --assignee <KUBELET_OBJECT_ID> --role AcrPull --scope <ACR_ID>. Then verify with az role assignment list --assignee <ID> --scope <ACR_ID>. Never assume same-subscription means same-permissions.
×

Granting AcrPull to the cluster identity instead of the kubelet identity

Symptom
The role assignment exists, the portal shows it proudly, and pulls still fail. The cluster's control-plane identity pulls nothing; the kubelet identity on each node does the pulling, and it has no grant.
Fix
Query the actual kubelet identity with az aks show --query identityProfile.kubeletidentity.objectId and assign the role to that object ID. After any cluster identity change, re-run the assignment before redeploying workloads.
×

Using admin credentials in imagePullSecrets and forgetting they expire

Symptom
Pulls work for months, then every pod fails at 3 AM when someone rotates the ACR admin password. The Kubernetes secret still holds the old password and nothing updates it automatically.
Fix
Rotate credentials on a schedule with az acr credential renew, store them in Key Vault, and sync them to the Kubernetes secret through an operator. Alert on secret age so rotation happens before expiry, not after an outage.
×

Blaming RBAC when the image tag simply doesn't exist

Symptom
The team burns an hour on role assignments while the real problem is a typo in the tag or a CI job that never pushed. RBAC fixes change nothing because permission was never the problem.
Fix
Check the exact image reference with az acr repository show-tags and pin deployments to immutable digests. Keep imagePullPolicy explicit so a missing tag surfaces as InvalidImageName instead of a misleading pull-backoff loop.
×

Locking down ACR networking without an exception for the cluster

Symptom
RBAC is perfect and pulls still time out. The ACR firewall drops the nodes' traffic before authentication even happens, producing timeouts that look nothing like access-denied.
Fix
Put AKS and ACR in peered VNets or grant the ACR firewall exception for the cluster egress IPs, and allow the node subnet explicitly. Test pulls with az aks check-acr after any network change.
INTERVIEW PREP · PRACTICE MODE

Interview Questions on This Topic

Q01JUNIOR
What does ImagePullBackOff mean when the registry is ACR?
Q02SENIOR
How do you find the kubelet identity and grant it ACR access?
Q03SENIOR
Why AcrPull instead of Contributor on the registry?
Q04SENIOR
AcrPull is assigned yet pulls fail. What's your next hypothesis?
Q05SENIOR
How do you make AKS-to-ACR auth self-healing in infrastructure as code?
Q01 of 05JUNIOR

What does ImagePullBackOff mean when the registry is ACR?

ANSWER
The kubelet on the node couldn't pull the container image from the registry, and Kubernetes backs off between retries. Against ACR the usual cause is a missing AcrPull grant on the kubelet identity, but it can also be a wrong tag or a firewall. I'd run kubectl describe pod for the event, then az aks check-acr to test the path.
FAQ · 6 QUESTIONS

Frequently Asked Questions

01
Should I use managed identity or imagePullSecrets for ACR pulls?
02
Which identity actually pulls the image: cluster or kubelet?
03
Is there one command that validates the whole AKS-to-ACR path?
04
Can I pull from an ACR in another tenant?
05
What does ImagePullBackOff actually mean?
06
How do I scope ACR access safely across teams?
N
Naren Founder & Principal Engineer

20+ years shipping production backend systems. Written from production experience, not tutorials.

Follow
✓ Verified
production tested
September 27, 2026
last updated
2,085
articles · all by Naren
🔥

That's Azure. Mark it forged?

5 min read · try the examples if you haven't

←
Previous
Azure App Service 502.5 Process Failure
3 / 4 · Azure
Next
Azure Function Timed Out After 230 Seconds
→