在 Azure DevOps 中使用 Azure 文件复制任务将数据从存储帐户复制到存储帐户

时间:2021-03-10 16:45:00

标签: azure azure-devops azure-pipelines azcopy

我配置了以下 YAML,但我猜我不能在这里使用存储帐户作为源输入?我认为我可以,因为任务只是使用 azcopy(注意:该命令在命令行中工作正常,只是不在管道中(即设置了权限(例如,SPN 已被授权并设置了 RBAC)。

代码如下:

trigger:
- dev

pool:
  vmImage: windows-latest
steps:
 #Copy files to Azure Blob Storage
- task: AzureFileCopy@4
  inputs:
    sourcePath: 'https://someonesbackups.blob.core.windows.net/backups?mysastokengoeshere'
    azureSubscription: MY-Production-Subscription
    destination: azureBlob
    storage: azcopypipelinetest
    containerName: restored
    additionalArgumentsForBlobCopy: --recursive=true

但是,当它运行时,我收到以下错误:

"failed to perform copy command due to error: cannot start job due to error: cannot scan the path \\?\D:\a\1\s\https:\someonesbackups.blob.core.windows.net\backups?mysastokengoeshere=-REDACTED-, please verify that it is a valid."

当然看起来你可以这样做,但我猜我在这里遗漏了一些基本的东西。

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-file-copy?view=azure-devops

1 个答案:

答案 0 :(得分:0)

Azure 文件复制任务仅支持将文件从本地机器或 UNC 共享上传到存储帐户。

您可以查看任务介绍中的sourcepath 字段定义。

enter image description here

要将数据从存储帐户复制到存储帐户,您需要使用 azcopy command 将文件复制到本地计算机,并使用 Azure 文件复制任务将文件上传到另一个存储帐户。

- script: 'azcopy copy ''https://mystorageaccount.blob.core.windows.net/mycontainer/myBlobDirectory/*'' ''$(build.sourcesdirectory)\myDirectory'''
  displayName: 'Command Line Script'

- task: AzureFileCopy@4
  inputs:
    sourcePath: '$(build.sourcesdirectory)\myDirectory'
    azureSubscription: MY-Production-Subscription
    destination: azureBlob
    storage: azcopypipelinetest
    containerName: restored
    additionalArgumentsForBlobCopy: --recursive=true