【问题标题】:Azure batch NodeFiles to Blob StotageAzure 批处理节点文件到 Blob 存储
【发布时间】:2015-10-12 20:22:09
【问题描述】:

我在 Microsoft Azure Batch Services 上运行任务,其中每个任务在节点上创建一组文件。我必须将这些文件复制到 Blob 存储中。

任务是从不属于批处理池的虚拟机创建和管理的

我能够访问节点文件,并且可以将内容写入 blob 存储,但这意味着我将文件作为字符串获取到我的驱动虚拟机上并将其上传到 blobstorage。

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

为了防止额外的流量,有人知道我可以将文件直接上传到 BlobStorage 的方法吗?

我无法控制任务中的 exe,因此不能直接从任务中上传它

【问题讨论】:

  • 嗨@amutter,这是一个有趣的问题,因此回复:所以你可以使用:CloudBlockBlob:: => UploadFromFileAsync = msdn.microsoft.com/en-us/library/azure/dn451828.aspx 你的意思是开发代码甚至不想遍历文件流,只需使用某种函数按原样上传文件,例如:“UploadFile(文件路径,文件名)”。请让我知道,一旦我理解正确,我可以发布一些详细信息和样本作为答案。 :)

标签: azure azure-blob-storage azure-batch


【解决方案1】:

更新答案 2017-10-27:

您现在可以使用task output files 使用大于或等于2017-05-01 的 API 版本和虚拟机配置池直接从您的任务上传工件。

原答案:

如果您能够将可执行文件封装在 bat/cmd 文件或 shell 脚本中,则可以直接从计算节点上传到存储。如果您的 VM 是 Windows,您可以使用 AzCopy 或如果您的 VM 是 Linux(或 Windows),则可以使用 blobxfer 在程序退出后传输文件。您需要将程序安装为计算节点启动任务的一部分、作为作业准备任务的一部分安装,或者将其作为资源文件的一部分(如果是 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>

【讨论】:

  • 有什么办法可以添加截图吗?通过 UI 容易吗?
猜你喜欢
  • 2018-11-20
  • 2019-12-18
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 2017-08-18
  • 1970-01-01
  • 1970-01-01
  • 2020-08-25
相关资源
最近更新 更多