从Azure DevOps用ARM模板部署存储账户Azure Alerts时遇参数错误
解决Azure DevOps中ARM模板部署存储账户告警的空键错误
错误详情
检测到文件'/home/vsts/work/1/s/Alerts_parameters.json'的编码为'utf-8'
覆盖''参数时出错,原因是'TypeError: Cannot read property 'type' of undefined',请确保其符合JavaScript对象表示法(JSON)规范
##[error]其中一个部署参数存在空键。
##[error]其中一个部署参数存在空键。
用户管道配置
variables: - name: subscriptionId value: 'XXXX' - name: azureResourceManagerConnection value: 'Visual Studio Professional Subscription(XXXX)' - name: resourceGroupName value: 'AB-RG-PP-TEST' - name: storageAccounts_externalid value: '/subscriptions/$(subscriptionId)/resourceGroups/$(resourceGroupName)/providers/Microsoft.Storage/storageAccounts/st${{ lower(parameters.Project) }}${{ lower(parameters.ENV) }}' - name: actiongroups_application_insights_smart_detection_externalid value: '/subscriptions/$(subscriptionId)/resourceGroups/$(resourceGroupName)/providers/microsoft.insights/actiongroups/application insights smart detection' - task: AzureResourceManagerTemplateDeployment@3 name: 'Alert_Deployment' inputs: deploymentScope: 'Resource Group' azureResourceManagerConnection: $(azureResourceManagerConnection) subscriptionId: $(subscriptionId) action: 'Create Or Update Resource Group' resourceGroupName: '$(resourceGroupName)' location: 'North Europe' templateLocation: 'Linked artifact' csmFile: 'Alerts.json' csmParametersFile: 'Alerts_parameters.json' deploymentMode: 'Incremental' overrideParameters: -storageAccounts_externalid ${{ variables.storageAccounts_externalid }} -actiongroups_application_insights_smart_detection_externalid ${{ variables.actiongroups_application_insights_smart_detection_externalid }} -metricAlerts_AZURE_INFRASTRUCTURE_Isssues_name AZURE INFRASTRUCTURE Isssues
问题原因与解决步骤
1. 带空格的参数值未加引号(核心问题)
在overrideParameters的最后一项中,参数值AZURE INFRASTRUCTURE Isssues包含空格,未用引号包裹时,Azure DevOps会将空格后的内容识别为新参数,导致解析出空键或无效参数。
修复方法:给带空格的参数值添加双引号:
overrideParameters: -storageAccounts_externalid ${{ variables.storageAccounts_externalid }} -actiongroups_application_insights_smart_detection_externalid ${{ variables.actiongroups_application_insights_smart_detection_externalid }} -metricAlerts_AZURE_INFRASTRUCTURE_Isssues_name "AZURE INFRASTRUCTURE Isssues"
2. 检查参数文件的JSON格式
打开Alerts_parameters.json,确保所有参数键名合法,不存在空字符串作为键的情况(比如"": "some-value"),同时验证JSON格式是否完整,无语法错误。
3. 验证变量引用有效性
确认管道中已正确定义parameters.Project和parameters.ENV参数,避免storageAccounts_externalid变量生成无效的存储账户ID,导致参数解析异常。
内容的提问来源于stack exchange,提问作者anuruddhas
相关产品推荐
相关产品推荐

