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));
对于我的任务,我使用本地持久化数据。到目前为止,我已经成功地使用 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));