Azure 发布管道任务。当前 blob 上有租约,请求中未指定租约 ID

Azure release pipeline task. There is currently a lease on the blob and no lease ID was specified in the request

我有一个 Azure 发布管道,其中一个步骤是将文件(比如“xyz.txt”)作为 Blob 文件从工作目录复制到 Azure 存储容器。直到昨天,它都运行良好并按预期工作。

steps:
- task: AzureFileCopy@3
  displayName: 'Copy file to BLOB'
  inputs:
    SourcePath: '$(System.DefaultWorkingDirectory)/FilePath'
    azureSubscription: 'ABCSubscription'
    Destination: AzureBlob
    storage: ABCstorage
    ContainerName: abcContainerName

现在我对文件 ("xyz.txt") 做了一些更改,每当我从发布管道创建发布时,我都会看到错误 "The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request..。这导致发布管道失败。解决方案是什么?

我是否必须登录门户并手动单击 "Break lease"。有没有办法只通过管道来做到这一点 ("Break lease")?

您可以使用以下解决方法解除租约

解决方案 1: 在 Azure Devops 中将如下所示:

steps: 

  - task: AzureCLI@2 

    displayName: "Break lease on terraform state" 

    name: BreakLease 

    inputs: 

      azureSubscription: ${{ parameters.ServiceConnectionName }} 

      scriptType: "pscore" 

      scriptLocation: "inlineScript" 

      inlineScript: "az storage blob lease break --container-name 'test' --blob-name '${{ parameters.File }}' --account-name '${{ parameters.StorageAccountName }}'" 

方案二:可以通过azure storage explorer解除租约:

如果您想解除集装箱租约

第 1 步: 转到 存储帐户 --> select 容器 右键单击​​容器 Select 解除租约 .

对于 container 中的 blob 也是如此。

解决方案 3:使用 Azure CLI 命令解除租约

az storage blob lease break --blob-name   --container-name [--account-key]  [--account-name] 
[--auth-mode {key, login}] [--connection-string] [--if-match] [--if-modified-since] 
[--if-none-match] [--if-unmodified-since] [--lease-break-period] [--sas-token] 
[--subscription] [--tags-condition] [--timeout] 

 

有关详细信息,请参阅此文档:https://docs.microsoft.com/en-us/cli/azure/storage/blob/lease?view=azure-cli-latest#az_storage_blob_lease_break