Azure 发布管道任务。 Blob 当前存在租约,请求中未指定租约 ID

Posted

技术标签:

【中文标题】Azure 发布管道任务。 Blob 当前存在租约,请求中未指定租约 ID【英文标题】:Azure release pipeline task. There is currently a lease on the blob and no lease ID was specified in the request 【发布时间】:2022-01-19 09:20:27 【问题描述】:

我有一个 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】:

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

解决方案 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 '" 

解决方案2:你可以通过azure storage explorer来解除租约:

如果你想打破集装箱租约

第 1 步: 进入 storage account --> 选择 container 右键单击​​ container 选择 Break lease强>。

容器中的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

【讨论】:

谢谢@ShrutiJoshi!试试这个。 如果答案对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记,将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢 解决方案 1 非常适合我。我已经接受了这个答案。

以上是关于Azure 发布管道任务。 Blob 当前存在租约,请求中未指定租约 ID的主要内容,如果未能解决你的问题,请参考以下文章

Azure ADF 管道复制数据日志文件未触发第二个管道的“已创建 Blob”触发器

将 Azure 数据工厂上的数据管道从 SQL Server 复制到 Blob 存储

访问元数据会导致 Azure 数据工厂的嵌套管道

如何将容器blob下载到Azure App Service wwwroot?

用于 Linux 操作系统的 azure devops 发布管道中的自动化 SQL 部署任务

如何使用 azure 数据工厂下载 blob