You push code, hit deploy, and hope. Somewhere between Azure App Service and Cloud Run, requests vanish or timeouts multiply. The promise of “serverless everything” starts to look more like “serverless confusion.” Let’s fix that.
Azure App Service excels at running web applications under Microsoft’s managed platform with tight Azure AD integration. Google Cloud Run, on the other hand, packages workloads into containers that scale down to zero. Many engineering teams use both. Maybe your main app lives on Azure but you rely on Cloud Run for event-driven jobs, AI microservices, or image processing. Connecting them cleanly is where things get interesting.
The key is identity and networking. Azure App Service Cloud Run integration happens when your App Service authenticates through OpenID Connect (OIDC) or a federated service account so it can invoke Cloud Run endpoints securely. Instead of hardcoding secrets, you map Azure Managed Identities to Cloud Run’s IAM roles using OIDC tokens. The exchange is short-lived, verified, and logged, so no keys drift around your repo. Requests stay inside TLS boundaries, and both clouds trust the same cryptographic proof of identity.
To make it work, set Azure App Service to request an OIDC token audience that matches your Cloud Run service URL. In Cloud Run, grant the corresponding service account run.invoker permission. Test it once, log everything, and watch your cross-cloud calls flow in under a second.
If your logs still complain about permissions, check the token audience claim. That tiny mismatch is the number-one cause of 403s. Also, rotate identities by policy rather than panic — use short-lived tokens, not embedded credentials.