Skip to content

Validation Results

CheckResultDetails
bicep buildPassPassed with no blocking errors.
bicep lintPassPassed. No local lint violations remain.
validate:iac-security-baselinePassPassed after resolving tag casing and public network access hard gates.
lint:artifact-templatesPassPassed with one non-blocking documentation warning addressed in this artifact.
what-ifDeferredDeferred to Step 6 deployment workflow.
NoteImpactReference
uniqueSuffix is generated once and reused for globally unique names.Stable naming across Key Vault, Storage, and ACR.main.bicep
Phase selection includes prerequisites implicitly in code ordering (foundation → networking → security-data-images → compute → cost-monitoring).Later phases can redeploy safely without broken outputs.main.bicep
Resource-group deny-policy tags are applied in deploy.ps1 before Bicep runs.Prevents hard-fail on first deployment.deploy.ps1
Key Vault stores the Application Insights connection string for the Web App to resolve through managed identity.Avoids inline secret values in Web App configuration.modules/key-vault.bicep, modules/web-app.bicep
Web App RBAC is created after the app identity exists.Grants AcrPull, Key Vault Secrets User, and Storage Table Data Contributor.modules/web-app.bicep
var uniqueSuffix = take(toLower(uniqueString(resourceGroup().id)), 6)

The preflight check validated all AVM module schemas before code generation.

CheckStatusNotes
All AVM modules verifiedPass9 AVM-backed resources + 1 native validated.
Parameter types confirmedPassModule-specific pitfalls translated into wrapper inputs.
Region limitations handledPassNo blocker for swedencentral; SKU-specific caveats handled in code.
VNet + PE configuration verifiedPassSubnet delegation, PE DNS zones, and network isolation validated.
Governance gate satisfiedPassDeny-policy requirement is met by pre-tagging the resource group.
Pitfalls addressedPassNo unresolved AVM or policy blocker remains.
ResourceAVM Module PathVersionStatus
Log Analytics Workspacebr/public:avm/res/operational-insights/workspace0.15.0Pass
Application Insightsbr/public:avm/res/insights/component0.7.1Pass
Virtual Networkbr/public:avm/res/network/virtual-network0.7.0Pass
Private DNS Zone (×3)br/public:avm/res/network/private-dns-zone0.7.0Pass
Key Vaultbr/public:avm/res/key-vault/vault0.13.3Pass
Storage Accountbr/public:avm/res/storage/storage-account0.32.0Pass
Container Registrybr/public:avm/res/container-registry/registry0.12.1Pass
App Service Planbr/public:avm/res/web/serverfarm0.4.0Pass
Web Appbr/public:avm/res/web/site0.15.0Pass
Consumption BudgetNative Microsoft.Consumption/budgets@2024-08-012024-08-01Pass
  • Log Analytics dailyQuotaGb uses string type
  • App Service Plan uses kind: linux with reserved: true for Linux container hosting
  • Web App uses siteConfig.linuxFxVersion with DOCKER| prefix for ACR image
  • Private endpoints use snet-pe subnet with matching private DNS zone groups
  • App Insights uses connectionString — no deprecated instrumentation-key-only pattern
  • Managed identity is used for Web App secrets, ACR pull, and Storage access
  • Resource-group deny-policy tags are applied before deployment in deploy.ps1
  • Storage hardening is explicit rather than relying on defaults
  • Key Vault, Storage, and ACR publicNetworkAccess set to Disabled with PE access only