Azure Batch 任务中的本地 VM 存储

Local VM storage in Azure Batch task

对于我的任务,我使用本地持久化数据。到目前为止,我已经成功地使用 Path.GetTempPath() 获取临时文件夹并将数据保存在那里并执行一些计算。临时文件夹位于系统驱动器上,该驱动器不够大(大约 30GB)。我正在使用带有 1000GB HDD 的 VM。

我想改为将数据写入大 C:\ 驱动器,但它抛出异常: Access to the path 'C:\whatever_the_path_is' is denied. 当我尝试访问它时。

我看到 PoolNonAdmin[some-digits] 用户下的任务 运行 显然没有足够的权限。

是否有任何特殊的 API 可以将本地存储用于 Azure Batch 任务?

编辑:我熟悉 %AZ_BATCH_NODE_SHARED_DIR% 但由于特定原因我不能使用它。

您可以将 Azure Batch 定义的环境变量用于引用临时磁盘的路径。例如,%AZ_BATCH_TASK_WORKING_DIR% 将以当前任务的工作目录为目标(并且可以由任务 运行 所在的任何用户写入)。或者 %AZ_BATCH_NODE_SHARED_DIR% 变量将引用始终位于临时磁盘上的共享目录路径;所有用户(任务在 运行 下,无论是池管理员、非管理员还是临时任务用户)都可以写入此目录。您可以查看 Azure Batch here.

定义的所有环境变量

我在这里找到了解决方案: https://docs.microsoft.com/en-us/azure/batch/batch-user-accounts

在我的例子中,它是像这样分配提升的 UserIdentity 任务:

task.UserIdentity = new UserIdentity(new AutoUserSpecification(elevationLevel: ElevationLevel.Admin, scope: AutoUserScope.Pool));