对于我的任务,我使用的是本地持久数据。到目前为止,我已成功使用Path.GetTempPath()
来获取临时文件夹并在那里保存数据并执行一些计算。临时文件夹位于系统驱动器上,该文件夹不够大(大约30GB)。我正在使用1000GB硬盘的VM。
我想将数据写入大型C:\驱动器,但它会引发异常:
当我尝试访问它时Access to the path 'C:\whatever_the_path_is' is denied.
。
我发现任务在PoolNonAdmin[some-digits]
用户下运行,显然没有足够的权限。
是否有任何特殊的API可以在Azure批处理任务中使用本地存储?
编辑:我熟悉%AZ_BATCH_NODE_SHARED_DIR%
,但由于特定原因,我无法使用它。
答案 0 :(得分:1)
您可以将Azure Batch定义的环境变量用于引用临时磁盘的路径。例如,%AZ_BATCH_TASK_WORKING_DIR%
将定位当前任务的工作目录(并且可由任务运行的任何用户写入)。或者%AZ_BATCH_NODE_SHARED_DIR%
变量将引用始终位于临时磁盘上的共享目录路径;所有用户(在其下运行任务,无论是池管理员,非管理员或临时任务用户)都可以写入此目录。您可以查看Azure Batch here定义的所有环境变量。
答案 1 :(得分:0)
我在这里找到了一个解决方案: https://docs.microsoft.com/en-us/azure/batch/batch-user-accounts
在我的例子中,它是像这样分配任务提升的UserIdentity:
task.UserIdentity = new UserIdentity(new AutoUserSpecification(elevationLevel: ElevationLevel.Admin, scope: AutoUserScope.Pool));