public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            try
            {
                log.LogInformation("Started processing request!");

                string      requestBody = await new StreamReader(req.Body).ReadToEndAsync();
                Models.Task task        = JsonConvert.DeserializeObject <Models.Task>(requestBody);

                string jsonTaskDescription = await storageService.GetFileContents(task.TaskName, configuration["TaskDefinitionContainerName"]);

                TaskDefinition taskDefinition = JsonConvert.DeserializeObject <TaskDefinition>(jsonTaskDescription);

                log.LogInformation("Validating task parameters");
                if (!TaskParameterValidationHelper.ValidateTaskParameters(task, taskDefinition, out string errorMessage))
                {
                    log.LogInformation("Validating task parameters failed");
                    return(new BadRequestObjectResult(errorMessage));
                }

                log.LogInformation("Getting SAS for script");
                string uriForScript = storageService.GetUriForFile(taskDefinition.ScriptName, configuration["TaskScriptsContainerName"]);

                log.LogInformation("Constructing environment variables");
                var environmentVariables = TaskEnvironmentVariablesHelper.ConstructEnvionmentVariables(task, taskDefinition);

                log.LogInformation("Starting container instance");
                string name = await containerInstanceService.StartContainerInstace(taskDefinition.DockerImage, environmentVariables, uriForScript);

                log.LogInformation("Complete! Started container with name " + name);

                return(new OkObjectResult(name));
            }
            catch (Exception e)
            {
                log.LogError(e, "Unable to process request");
                return(new InternalServerErrorResult());
            }
        }