Python Azure Batch - 权限被拒绝的Linux节点

时间:2017-11-24 12:37:54

标签: python azure azure-batch

我正在使用Azure Batch在几个Linux节点上运行python脚本(在创建池之后)。每个节点使用14.04.5-LTS版本的Ubuntu。

在脚本中,我在每个节点上传几个文件,然后在每个节点上运行几个任务。但是,当我尝试执行第一个任务时,我收到“Permission Denied”错误。实际上,任务是解压缩几个文件(fyi,这些zip文件的上传进展顺利)。 这个脚本运行良好,直到上周。我怀疑Ubuntu版本的更新,但也许是其他的东西。

这是我得到的错误:

  

错误:无法打开zipfile [/mnt/batch/tasks/shared/01-AXAIS_HPC.zip]           没有权限   解压缩:无法找到或打开/mnt/batch/tasks/shared/01-AXAIS_HPC.zip,

以下是代码的主要部分:

credentials = batchauth.SharedKeyCredentials(_BATCH_ACCOUNT_NAME,_BATCH_ACCOUNT_KEY)
batch_client = batch.BatchServiceClient(
        credentials,
        base_url=_BATCH_ACCOUNT_URL)
create_pool(batch_client,
                _POOL_ID,
                application_files,
                _NODE_OS_DISTRO,
                _NODE_OS_VERSION)
helpers.create_job(batch_client, _JOB_ID, _POOL_ID)
add_tasks(batch_client,
              _JOB_ID,
              input_files,
              output_container_name,
              output_container_sas_token)

使用add_task:

def add_tasks(batch_service_client, job_id, input_files,
          output_container_name, output_container_sas_token):

print('Adding {} tasks to job [{}]...'.format(len(input_files), job_id))

tasks = list()

for idx, input_file in enumerate(input_files):
      command = ['unzip -q $AZ_BATCH_NODE_SHARED_DIR/01-AXAIS_HPC.zip -d $AZ_BATCH_NODE_SHARED_DIR',
                 'chmod a+x $AZ_BATCH_NODE_SHARED_DIR/01-AXAIS_HPC/00-EXE/linux/*',
                 'PATH=$PATH:$AZ_BATCH_NODE_SHARED_DIR/01-AXAIS_HPC/00-EXE/linux',    
                 'unzip -q $AZ_BATCH_TASK_WORKING_DIR/'
                 '{} -d $AZ_BATCH_TASK_WORKING_DIR/{}'.format(input_file.file_path,idx+1),                   
                 'Rscript $AZ_BATCH_NODE_SHARED_DIR/01-AXAIS_HPC/03-MAIN.R $AZ_BATCH_TASK_WORKING_DIR $AZ_BATCH_NODE_SHARED_DIR/01-AXAIS_HPC $AZ_BATCH_TASK_WORKING_DIR/'
                  '{} {}' .format(idx+1,idx+1),                     
                 'python $AZ_BATCH_NODE_SHARED_DIR/01-IMPORT_FILES.py '
                  '--storageaccount {} --storagecontainer {} --sastoken "{}"'.format(
                   _STORAGE_ACCOUNT_NAME,
                   output_container_name,
                   output_container_sas_token)]          
      tasks.append(batchmodels.TaskAddParameter(
            'Task{}'.format(idx),
            helpers.wrap_commands_in_shell('linux', command),
            resource_files=[input_file]
            )
      )
Split = lambda tasks, n=100: [tasks[i:i+n] for i in range(0, len(tasks), n)]
SPtasks = Split(tasks)      
for i in range(len(SPtasks)):
    batch_service_client.task.add_collection(job_id, SPtasks[i])

您是否有任何见解可以帮助我解决这个问题?非常感谢你。

罗宾

0 个答案:

没有答案