Azure Ошибка копирования файла - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть эта задача в Devops: я хочу скопировать текстовый файл из blobstorage на виртуальную машину.

- task: AzureFileCopy@4
      inputs:
        sourcePath: 'https://storagename.blob.core.windows.net/container/file.txt'
        azureSubscription: 'subscription connection'
        storage: 'a_storage_in_subscription'
        resourceGroup: $(rgName_of_VM)
        destination: 'azureVMs'
        MachineNames: $(ipofVM)
        vmsAdminUserName: $(adminUsername)
        vmsAdminPassword: $(adminPassword)
        targetPath: 'c:\files'

Но это не удается с Upload to container: '8e107770-69d8-xxx' in storage account: 'a_storage_in_subscription' with blob prefix: '' failed with error: 'AzCopy.exe exited with non-zero exit code while uploading files to blob storage.' For more info please refer to https://aka.ms/azurefilecopyreadme

Насколько я понимаю, задача копирует файл и сначала помещает его в контейнер в поле «хранилище» (для этого используется guid создать это). Задача была выполнена успешно, но затем произошла ошибка. Что я делаю не так?

1 Ответ

1 голос
/ 01 мая 2020

Если вы повторно запустите этот неисправный конвейер вместе с установкой system.debug на true, вы увидите другое сообщение, которое может более подробно объяснить причину сбоя: failed to perform copy command due to error: cannot start job due to error: cannot scan the path \\?\D:\a\1\s\https://storagename.blob.core.windows.net/container/file.txt.

Теперь вы должны знать, почему вы столкнулись с этим сообщением об ошибке. Это потому, что наша задача Azure File Copy не поддерживает использование URL-адреса HTTPS в sourcePath. Значение sourcePath должно быть удовлетворено по нижеуказанному:

enter image description here


Так как мы не поддерживаем использование HTTPS url здесь. Чтобы обойти это, вы можете сначала загрузить этот файл в рабочий каталог сборки, сначала используя команду Azure cli. Затем загрузите его в AzureVM:

- task: AzureCLI@1
  displayName: 'Azure CLI '
  inputs:
    azureSubscription: {subscription}
    scriptLocation: inlineScript
    inlineScript: |
     mkdir $(Build.SourcesDirectory)/File
     az storage blob download --container-name {container name} --file $(Build.SourcesDirectory)/file --name {file name} --account-key $(accountkey) --account-name {blob name} 

- task: AzureFileCopy@4
  displayName: 'AzureVMs File Copy'
  inputs:
    SourcePath: '$(Build.SourcesDirectory)/File'
    azureSubscription: {subscription}
    Destination: AzureVMs
    storage: {storage}
    resourceGroup: '{resource group}'
    vmsAdminUserName: {login name}
    vmsAdminPassword: {login password}
    TargetPath: 'xxx'

Примечание : Вы можете получить accesskey на этой вкладке:

enter image description here

Теперь вы видите, что можете успешно загрузить файл в AzureVM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...