8.7 KiB
Error Handling Guide
This reference documents common errors during preflight validation and how to handle them.
Core Principle
Continue on failure. Capture all issues in the final report rather than stopping at the first error. This gives users a complete picture of what needs to be fixed.
Authentication Errors
Not Logged In (Azure CLI)
Detection:
ERROR: Please run 'az login' to setup account.
ERROR: AADSTS700082: The refresh token has expired
Exit Codes: Non-zero
Handling:
- Note the error in the report
- Include remediation steps
- Skip remaining Azure CLI commands
- Continue with other validation steps if possible
Report Entry:
#### ❌ Azure CLI Authentication Required
- **Severity:** Error
- **Source:** az cli
- **Message:** Not logged in to Azure CLI
- **Remediation:** Run `az login` to authenticate, then re-run preflight validation
- **Documentation:** https://learn.microsoft.com/en-us/cli/azure/authenticate-azure-cli
Not Logged In (azd)
Detection:
ERROR: not logged in, run `azd auth login` to login
Handling:
- Note the error in the report
- Skip azd commands
- Suggest
azd auth login
Report Entry:
#### ❌ Azure Developer CLI Authentication Required
- **Severity:** Error
- **Source:** azd
- **Message:** Not logged in to Azure Developer CLI
- **Remediation:** Run `azd auth login` to authenticate, then re-run preflight validation
Token Expired
Detection:
AADSTS700024: Client assertion is not within its valid time range
AADSTS50173: The provided grant has expired
Handling:
- Note the error
- Suggest re-authentication
- Skip Azure operations
Permission Errors
Insufficient RBAC Permissions
Detection:
AuthorizationFailed: The client '...' with object id '...' does not have authorization
to perform action '...' over scope '...'
Handling:
- First attempt: Retry with
--validation-level ProviderNoRbac - Note the permission limitation in the report
- If ProviderNoRbac also fails, report the specific missing permission
Report Entry:
#### ⚠️ Limited Permission Validation
- **Severity:** Warning
- **Source:** what-if
- **Message:** Full RBAC validation failed; using read-only validation
- **Detail:** Missing permission: `Microsoft.Resources/deployments/write` on scope `/subscriptions/xxx`
- **Recommendation:** Request Contributor role on the target resource group, or verify deployment permissions with your administrator
Resource Group Not Found
Detection:
ResourceGroupNotFound: Resource group 'xxx' could not be found.
Handling:
- Note in report
- Suggest creating the resource group
- Skip what-if for this scope
Report Entry:
#### ❌ Resource Group Does Not Exist
- **Severity:** Error
- **Source:** what-if
- **Message:** Resource group 'my-rg' does not exist
- **Remediation:** Create the resource group before deployment:
```bash
az group create --name my-rg --location eastus
### Subscription Access Denied
**Detection:**
SubscriptionNotFound: The subscription 'xxx' could not be found. InvalidSubscriptionId: Subscription '...' is not valid
**Handling:**
1. Note in report
2. Suggest checking subscription ID
3. List available subscriptions
---
## Bicep Syntax Errors
### Compilation Errors
**Detection:**
/path/main.bicep(22,51) : Error BCP064: Found unexpected tokens /path/main.bicep(10,5) : Error BCP018: Expected the "=" character at this location
**Handling:**
1. Parse error output for line/column numbers
2. Include all errors in report (don't stop at first)
3. Continue to what-if (may provide additional context)
**Report Entry:**
```markdown
#### ❌ Bicep Syntax Error
- **Severity:** Error
- **Source:** bicep build
- **Location:** `main.bicep:22:51`
- **Code:** BCP064
- **Message:** Found unexpected tokens in interpolated expression
- **Remediation:** Check the string interpolation syntax at line 22
- **Documentation:** https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/diagnostics/bcp064
Module Not Found
Detection:
Error BCP091: An error occurred reading file. Could not find file '...'
Error BCP190: The module is not valid
Handling:
- Note missing module
- Check if
bicep restoreis needed - Verify module path
Parameter File Issues
Detection:
Error BCP032: The value must be a compile-time constant
Error BCP035: The specified object is missing required properties
Handling:
- Note parameter issues
- Indicate which parameters are problematic
- Suggest fixes
Tool Not Installed
Azure CLI Not Found
Detection:
'az' is not recognized as an internal or external command
az: command not found
Handling:
- Note in report
- Provide installation instructions.
- If available use the Azure MCP
extension_cli_installtool to get installation instructions. - Otherwise look for instructions at https://learn.microsoft.com/en-us/cli/azure/install-azure-cli.
- Skip az commands
Report Entry:
#### ⏭️ Azure CLI Not Installed
- **Severity:** Warning
- **Source:** environment
- **Message:** Azure CLI (az) is not installed or not in PATH
- **Remediation:** Install the Azure CLI <ADD INSTALLATION INSTRUCTIONS HERE>
- **Impact:** What-if validation using az commands was skipped
Bicep CLI Not Found
Detection:
'bicep' is not recognized as an internal or external command
bicep: command not found
Handling:
- Note in report
- Azure CLI may have built-in Bicep - try
az bicep build - Provide installation link
Report Entry:
#### ⏭️ Bicep CLI Not Installed
- **Severity:** Warning
- **Source:** environment
- **Message:** Bicep CLI is not installed
- **Remediation:** Install Bicep CLI: https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/install
- **Impact:** Syntax validation was skipped; Azure will validate during what-if
Azure Developer CLI Not Found
Detection:
'azd' is not recognized as an internal or external command
azd: command not found
Handling:
- If
azure.yamlexists, this is required - Fall back to az CLI commands if possible
- Note in report
What-If Specific Errors
Nested Template Limits
Detection:
The deployment exceeded the nested template limit of 500
Handling:
- Note as warning (not error)
- Explain affected resources show as "Ignore"
- Suggest manual review
Template Link Not Supported
Detection:
templateLink references in nested deployments won't be visible in what-if
Handling:
- Note as warning
- Explain limitation
- Resources will be verified during actual deployment
Unevaluated Expressions
Detection: Properties showing function names like [utcNow()] instead of values
Handling:
- Note as informational
- Explain these are evaluated at deployment time
- Not an error
Network Errors
Timeout
Detection:
Connection timed out
Request timed out
Handling:
- Suggest retry
- Check network connectivity
- May indicate Azure service issues
SSL/TLS Errors
Detection:
SSL: CERTIFICATE_VERIFY_FAILED
unable to get local issuer certificate
Handling:
- Note in report
- May indicate proxy or corporate firewall
- Suggest checking SSL settings
Fallback Strategy
When primary validation fails, attempt fallbacks in order:
Provider (full RBAC validation)
↓ fails with permission error
ProviderNoRbac (validation without write permission check)
↓ fails
Template (static syntax only)
↓ fails
Report all failures and skip what-if analysis
Always continue to generate the report, even if all validation steps fail.
Error Report Aggregation
When multiple errors occur, aggregate them logically:
- Group by source (bicep, what-if, permissions)
- Order by severity (errors before warnings)
- Deduplicate similar errors
- Provide summary count at the top
Example:
## Issues
Found **3 errors** and **2 warnings**
### Errors (3)
1. [Bicep Syntax Error - main.bicep:22:51](#error-1)
2. [Bicep Syntax Error - main.bicep:45:10](#error-2)
3. [Resource Group Not Found](#error-3)
### Warnings (2)
1. [Limited Permission Validation](#warning-1)
2. [Nested Template Limit Reached](#warning-2)
Exit Code Reference
| Tool | Exit Code | Meaning |
|---|---|---|
| az | 0 | Success |
| az | 1 | General error |
| az | 2 | Command not found |
| az | 3 | Required argument missing |
| azd | 0 | Success |
| azd | 1 | Error |
| bicep | 0 | Build succeeded |
| bicep | 1 | Build failed (errors) |
| bicep | 2 | Build succeeded with warnings |