首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在从Azure管道进行ARM部署时使用InvalidDeploymentParameterKey

在从Azure管道进行ARM部署时使用InvalidDeploymentParameterKey
EN

Stack Overflow用户
提问于 2021-03-16 10:01:53
回答 1查看 1.5K关注 0票数 1

下面是Azure DevOps中YAML管道的摘录:

代码语言:javascript
复制
  - task: AzureCLI@2
    name: GetAppInsightsConnString
    displayName: 'Get AppInsights ConnectionString'
    inputs:
      azureSubscription: ${{ parameters.TelemetryAzureSubscription }}
      scriptType: 'pscore'
      scriptLocation: 'inlineScript'
      inlineScript: |
        az extension add -n application-insights
        az feature register --name AIWorkspacePreview --namespace microsoft.insights
        $resourceInfo = az monitor app-insights component show --app ${{ parameters.AppInsightsResourceName }} --resource-group ${{ parameters.AppInsightsResourceGroupName }}
        $instrumentationKey = ($resourceInfo | ConvertFrom-Json).InstrumentationKey
        echo "##vso[task.setvariable variable=ApplicationInsightsInstrumentationKey]$instrumentationKey"
  - task: FileTransform@2
    displayName: "Replace Parameters From Variables"
    inputs:
      folderPath: '$(Pipeline.Workspace)'
      xmlTransformationRules: ''
      jsonTargetFiles: '**/${{ parameters.ArmTemplateParameters }}'
  - powershell: 'Get-Content $(Pipeline.Workspace)/${{ parameters.ArtifactName }}-provisioning/${{ parameters.ArmTemplateParameters }}'
    displayName: 'Preview Arm Template Parameters File'
  - task: PowerShell@2
    displayName: "TEMP: Test new variable values"
    inputs:
      targetType: 'inline'
      script: |
        Write-Host "ApplicationInsightsInstrumentationKey: $(ApplicationInsightsInstrumentationKey)"
  - task: AzureResourceManagerTemplateDeployment@3
    inputs:
      deploymentScope: 'Resource Group'
      ConnectedServiceName: ${{ parameters.AzureSubscription }}
      action: 'Create Or Update Resource Group'
      resourceGroupName: ${{ parameters.ResourceGroupName }}
      location: $(locationLong)
      templateLocation: 'Linked artifact'
      csmFile: '$(Pipeline.Workspace)/${{ parameters.ArtifactName }}-provisioning/${{ parameters.ArmTemplate }}'
      csmParametersFile: '$(Pipeline.Workspace)/${{ parameters.ArtifactName }}-provisioning/${{ parameters.ArmTemplateParameters }}'
      overrideParameters: '–applicationInsightsInstrumentationKey "$(ApplicationInsightsInstrumentationKey)"'
      deploymentMode: 'Incremental'

这是连接到App实例,获取检测键,然后在预览和部署ARM参数文件之前对其执行变量替换。

检测键写到一个ApplicationInsightsInstrumentationKey管道变量,您可以看到一个稍后的任务,它在管道日志中预览这一点,这样我就可以确认变量是按预期设置的。

在最后一个任务中,我使用一个overrideParameters选项将这个键作为applicationInsightsInstrumentationKey参数的值输入到部署中。这是管道失败的地方,并有错误:

部署参数的##errorOne有一个空键。详情请见https://aka.ms/resource-manager-parameter-files

我的网络搜索告诉我,当值有空格且不包含双引号时,可能会发生这种情况,但这里没有这两种情况。事实上,我甚至可以用硬编码的值替换这一行,我仍然得到同样的问题。

如果删除该overrideParameters行,部署就会成功,但显然不包括我想要的参数。

有人知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2021-03-16 10:23:52

如ARM模板部署上的帮助对话框所示,ADO任务

由于applicationInsightsInstrumentationKey不会有多个单词,请尝试更改行,如下所示:

代码语言:javascript
复制
overrideParameters: '–applicationInsightsInstrumentationKey $(ApplicationInsightsInstrumentationKey)'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66652919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档