2015-10-12 2 views
1

Я запускаю задачи в Microsoft Azure Batch Services, где каждая задача создает набор файлов на узле. Я должен скопировать эти файлы в хранилище Blob.Azure batch NodeFiles to Blob Stotage

Задача создаются и управляются из виртуальной машины, которая не является частью пакетного пула

Я могу Acces файлы узлов и я могу записать содержимое в хранилище больших двоичных объектов, однако это означает, что я получаю файл как строку на моем вождении vm и загрузить его в blobstorage.

 var container = BlobClient.GetContainerReference(containerName); 
     container.CreateIfNotExists(); 
     var content = nodeFile.ReadAsString(); 
     var blob = container.GetBlockBlobReference(nodeFile.Name); 
     blob.UploadText(content); 

Чтобы предотвратить дополнительное Trafic, кто-нибудь знает, как я могу загрузить файлы непосредственно в BlobStorage?

Я не имею никакого контроля над ехом в задаче так, загрузив его из задачи непосредственно не вариант

+0

Hiya @amutter, следовательно, заполнивших его интересный вопрос: так что вы можете использовать: CloudBlockBlob :: => 'UploadFromAilec' = https://msdn.microsoft.com/en-us/library/azure/dn451828.aspx ** или ** вы имеете в виду, что dev-код даже не хочет выполнять итерацию по файловому потоку и просто обновлять файл как с какой-то функцией, например, например: «UploadFile (путь к файлу, имя файла)». Пожалуйста, дайте мне знать, что я могу опубликовать некоторые ответы и sampel как ответ, как только я пойму это правильно. ':)' –

ответ

0

Обновлено Ответ 2017-10-27:

Теперь вы можете напрямую загрузить артефакты ваша задача с task output files с версиями API больше или равна 2017-05-01 с пулами конфигурации виртуальной машины.

Оригинальный ответ:

Вы можете загрузить в хранилище непосредственно из вычислительных узлов, если вы можете обернуть свой исполняемый файл в сценарии битой/CMD файл или оболочки. Вы можете использовать AzCopy, если ваша виртуальная машина - это Windows или blobxfer, если ваша виртуальная машина - это Linux (или Windows) для передачи ваших файлов после выхода вашей программы. Вам необходимо будет установить программы как часть задачи запуска вычислительного узла, установить как часть задачи подготовки заданий или включить ее как часть ваших файлов ресурсов (если AzCopy), чтобы она была доступна для вашей задачи.

Например на Windows-узлах:

@echo off 
    myprogram.exe arg1 arg2 
    set /a rc=%ERRORLEVEL% 
    REM assuming return code of 0 is success 
    IF %rc% EQU 0 (
     AzCopy.exe <azcopy args> 
    ) 
    exit /b %rc% 

, например, на Linux узлах:

#!/usr/bin/env bash 
    set -e 
    # your program below 
    myprogram arg1 arg2 
    # invoke blobxfer to transfer output data to storage, see docs for more info 
    blobxfer <blobxfer args>