Bicep 部署脚本 ERROR: argument --query: invalid jmespath_type value: '"[?contains(name,'. 请参阅

问题描述 投票:0回答:1

我想通过部署脚本获取二头肌中 vmss 的动态名称。有两个vmss,我想用

--query
过滤名称。

var azCommandGetVmmsName = 
'az vmss list --resource-group ${rgMcName} --query "[?contains(name, \'workloadpool\')].name" -o tsv'

resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'assign-identity-to-nodepool'
  identity:  {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${identityAssginmentIdentity.id}': {}
    }
  }
  location: location
  kind: 'AzureCLI'
  properties: {
    azCliVersion: '2.52.0'
    environmentVariables: [
      {
        name: 'COMMAND'
        value: azCommandGetVmmsName
      }
    ]
    scriptContent: '''
      vmmsName=$COMMAND
      echo "name: $vmssName"
    '''
    retentionInterval: 'PT1H'
    cleanupPreference: 'OnSuccess'
  }

如果我在 powershell 和 ubuntu wsl 中本地运行该命令,它会带来预期的结果:

az vmss list --resource-group  MC_(...)_westeurope --query "[?contains(name, 'workloadpool')].name" -o tsv
-> aks-workloadpool-40863341-vmss

但在天蓝色的脚本中我收到此错误:

The provided script failed with multiple errors. First error:
ERROR: argument --query: invalid jmespath_type value: 
'"[?contains(name,'. Please refer to https://aka.ms/DeploymentScriptsTroubleshoot 
for more deployment script information. (Code: DeploymentScriptError), 
ERROR: argument --query: invalid jmespath_type value: '"[?contains(name,' (Code: DeploymentScriptError), 
To learn more about --query, 
please visit: 'https://docs.microsoft.com/cli/azure/query-azure-cli' (Code: DeploymentScriptError)

COMMAND
环境变量已正确解析:

也许单引号被解释为

--query
值的结尾?我该如何解决这个问题?

azure azure-cli azure-bicep
1个回答
0
投票

好吧,我通过将命令带入不带变量的脚本内容来解决它,但也许有人可以告诉为什么之前会发生这种情况:

resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'assign-identity-to-nodepool'
  identity:  {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${identityAssginmentIdentity.id}': {}
    }
  }
  location: location
  kind: 'AzureCLI'
  properties: {
    azCliVersion: '2.52.0'
    environmentVariables: [
      {
        name: 'RG'
        value: resourceGroupName
      }
    ]
    scriptContent: '''
      vmmsName=$(az vmss list --resource-group $RGMC --query "[?contains(name, 'workloadpool')].name" -o tsv)
      echo "name: $vmssName"
    '''
    retentionInterval: 'PT1H'
    cleanupPreference: 'OnSuccess'
  }
© www.soinside.com 2019 - 2024. All rights reserved.