An Azure service that provides a general-purpose, serverless container platform.
Hi @Stas Popov
To answer your main question directly: the evidence that separates "blocked bootstrap dependency" from "platform failure" is the firewall's own deny log. The Container Apps error itself won't name the destination, but Azure Firewall records every denied flow. Since you've deleted the environment, that log is only useful on the next attempt, so it's worth setting up before you retry:
- Enable structured firewall logs. On the firewall, add a diagnostic setting that sends Azure Firewall Application Rule, Network Rule and DNS proxy logs to Log Analytics in resource-specific mode.
- Redeploy the environment once, unchanged. Then query the application and network rule log tables (AZFWApplicationRule and AZFWNetworkRule) for Deny actions from the Container Apps subnet's address range during the deployment window.
- Read the result. If denies show up, they name the exact FQDN or IP and port the bootstrap needed, which is documented proof of a missing dependency. If there are no denies and it still fails with ManagedEnvironmentProvisioningError, you have solid evidence of a service-side problem to take to support.
On your one known deviation: Microsoft's Container Apps firewall guide lists *.blob.core.windows.net as a wildcard. Pinning a single regional Blob hostname is the most likely candidate, because platform components can pull from storage accounts other than your ACR's. If you need to keep it narrow, let the deny log tell you which extra Blob hostnames were requested rather than guessing.
Do you want to keep the Blob rule pinned for compliance reasons, or is the wildcard acceptable if the logs show it's needed?
If the deny log identifies the blocked dependency, please consider accepting it as the answer. If it shows no denies, let me know and I'll be happy to keep helping.
Reference: