在 Azure DevOps 管道中使用名称中的破折号访问 Key Vault 值

Access Key Vault value with dash in name in Azure DevOps pipeline

我有一个 devops yaml 管道,它利用 terraform 创建我的 Azure 资源。它会创建一个数据库、一个密钥保管库,然后为 sql 数据库连接字符串向密钥保管库添加一个秘密。根据创建 objects/properties 的 Key Vault 约定,Key Vault 机密名称为 Sql--ConnectionString。作为 devops 管道的一部分,我需要将此秘密值访问到 运行 迁移,但不知道该怎么做。

devops.yaml 的相关部分如下所示:

steps:
  - task: AzureKeyVault@2
    inputs:
      azureSubscription: <SUBSCRIPTION_NAME>
      KeyVaultName: <KEY_VAULT_NAME>

  - pwsh: |
      cd $(Agent.BuildDirectory)/migrations
      Write-Host ${Sql--ConnectionString}
      Write-Host $(TILAzFunctionCustomDomainVerificationId)

在 Azure Key Vault 步骤中,我看到以下内容: 这表明我的钥匙正在被拉入,包括 Sql 一个。

然后powershell步骤输出如下: 可以看出,名称中带有 -- 的值未显示,但没有显示。我尝试了很多不同的方法,但都没有任何运气。我假设密钥名称正在以某种方式进行转换,但我找不到有关如何发生这种情况的信息。

在这一行中,您使用了错误类型的括号:

Write-Host ${Sql--ConnectionString}

应该是

Write-Host $(Sql--ConnectionString)

请注意,powershell 变量的规则不适用于此处;这不是一个 powershell 变量,它是一个 azure devops pipeline variable 所以它需要圆括号,就像上一行一样。