What happens when you deploy
One command, and the halves either side of the dashed line are very different
YOUR MACHINE
main.bicep
what you wrote
→
transpile
ARM JSON
in memory, not a file
The Azure CLI ships the Bicep compiler. This step needs
no network and no login: it is pure text in, text out.
Want to see the JSON? Run it yourself:
az bicep build --file main.bicep --stdout
Functions are not resolved here. resourceGroup().location
survives into the JSON as an expression for Azure to evaluate.
HTTPS
AZURE
Azure Resource Manager
management.azure.com
↓
Compare with what already exists
create, update, or leave alone
↓
Your resources
storage account
Deployment record
the Deployments blade
Azure never sees your .bicep file. It receives JSON, and it decides what to change.
That second half is why a re-deploy is safe, and why the preview can exist at all.