存在资源授权问题:“管道无效。> 作业验证:步骤 TerraformTaskV1

There was a resource authorization issue: "The pipeline is not valid. > Job validate: Step TerraformTaskV1

当我拆分 yaml 来制作模板时,我在 Azure devops 管道中收到此错误

There was a resource authorization issue: "The pipeline is not valid. Job validate: Step TerraformTaskV1 input backendServiceArm references service connection azurerm which could not be found. The service connection does not exist or has not been authorized for use. For authorization details, refer to https://aka.ms/yamlauthz."

here给出解决方案,删除任务重新添加。但它对我不起作用。

当我在一个 yaml 文件中使用 terraform 时,它起作用了。

stages:
  - stage: validate
    jobs:
    - job: validate
      continueOnError: false
      steps: 
      - task: TerraformInstaller@0
        displayName: 'install'
        inputs:
          terraformVersion: '0.12.26'
      - task: TerraformTaskV1@0
        displayName: init
        inputs:
          provider: 'azurerm'
          command: 'init'
          backendServiceArm: 'azure-spn'
          backendAzureRmResourceGroupName: 'terraform-rg'
          backendAzureRmStorageAccountName: 'adsstatetr'
          backendAzureRmContainerName: 'sktfcontainer'
          backendAzureRmKey: 'terraform.tfstate'
      - task: TerraformTaskV1@0
        displayName: validate
        inputs:
          provider: 'azurerm'
          command: 'validate'

当我分成两个(模板)时

stages:
  - stage: validate
    jobs:
    - template: terraform-validate.yml
      parameters:
        version: '0.12.26'
        sp: 'azurerm'
        rg: 'terraform-rg'
        sg: 'adsstatetr'
        sgContainer: 'sktfcontainer'
        skey: 'terraform.tfstate'

失败,报上面写的错误!

parameters:
 version: ''
 sp: ''
 rg: ''
 sg: ''
 sgContainer: ''
 skey: ''
jobs: 
  - job: validate
    continueOnError: false
    steps: 
    - task: TerraformInstaller@0
      displayName: 'install'
      inputs:
        terraformVersion: '0.12.26'
    - task: TerraformTaskV1@0
      inputs:
        provider: 'azurerm'
        command: 'init'
        backendServiceArm: '${{ parameters.sp }}'
        backendAzureRmResourceGroupName: '${{ parameters.rg }}'
        backendAzureRmStorageAccountName: '${{ parameters.sg }}'
        backendAzureRmContainerName: '${{ parameters.sgContainer }}'
        backendAzureRmKey: '${{ parameters.skey }}'

它还显示了一个奇怪的授权资源。单击 'approve' 也没有解决。又是为什么?如果服务连接有任何问题,为什么我的单个文件 yaml 可以工作?这里没有审批问题!

在作为手臂连接的工作示例中,您传递 backendServiceArm: 'azure-spn',而在模板中它是 sp: 'azurerm',因此如果您更改为 sp: 'azure-spn',您应该没问题。

您的管道无法识别您传递的任何变量或参数。如果它的识别仍然存在问题而不是检查语法。比如if语句不在stage下面等