0

我正在使用该AzureKeyVault任务从 Key Vault 中检索机密。秘密的名称是StorageAccountKey。此名称存储在变量中KeyName。我这样做

- task: AzureKeyVault@1
  displayName: 'Get key'
  name: GetKey
  inputs:
    azureSubscription: '${{ parameters.azureSubscription }}'
    KeyVaultName: '$(KeyVaultName)'
    SecretsFilter: '$(KeyName)'

现在,在后续任务中,我想访问该密钥。鉴于秘密的名称本身存储在变量中,我该怎么做?以下似乎不起作用

- task: Bash@3
  displayName: Create container
  inputs:
    targetType: 'inline'
    script: |
      az storage container create \
          --name raw \
          --account-name storageaccountname \
          --account-key $($(dataLakeAccountKeyKeyName))
    failOnStderr: true

我收到错误

/mnt/azp/azp-linux1_5/_temp/6719378a-b3ee-45d8-aad8-4f6a5e8b581e.sh: line 1: StorageAccountKey: command not found
ERROR: az storage container create: error: argument --account-key: expected one argument

因此,它似乎确实解决了内部变量,但仍然失败。

4

2 回答 2

0

我也努力完成这项工作,这对我有用:

steps:
  - task: AzureKeyVault@1
    inputs:
      azureSubscription: ${{ parameters.azureSubscription }}
      KeyVaultName: ${{ parameters.azureKeyVaultName }}
      SecretsFilter: '*'
      RunAsPreJob: true

  - bash: |
      #I can now use ${GCP_CREDS}
    displayName: GCP auth
    env:
      GCP_CREDS: $(${{ parameters.azureKeyVaultCredentailsKey }})
于 2021-12-15T11:13:20.673 回答
0

尝试使用 --account-key $(StorageAccountKey)

来自“Azure Key Vault 任务”文档。

“值作为字符串检索。例如,如果有一个名为 connectionString 的机密,则会使用从 Azure 密钥库中获取的相应机密的最新值创建一个任务变量 connectionString。然后,该变量可用于后续任务。”

因此,如果您访问在 azure 密钥库“StorageAccountKey”中命名的机密,则 Azure DevOps 会从这个名为“StorageAccountKey”的位置变量中创建。

我从未使用过 Azure Key Vault,但希望对您有所帮助 :)

于 2019-12-20T14:48:32.630 回答