I have a legacy exe which takes local machine file path, processes it and produces output file in again the local path. Can this be run on Azure Webjob?
I was thinking to write a wrapper exe which downloads file from blob storage -> store it in local file system -> call the legacy exe with local file path -> get the output and upload it to the blob again.
Will this approach work or there are limitations?
Such exe should run fine, as long as you get to pass it the folders to write from/to. Before getting into WebJobs, I suggest testing it manually in a Web App using Kudu Console, to make sure it runs fine.
Then if your goal is to have it work with blob input/output, the wrapper exe should work. Obviously, it'd be cleaner to have it directly work with blog streams, but if the legacy exe is a given and can't be changed, the wrapper approach should be fine.
If you end up writing a wrapper, then the Files binding extension for the WebJobs SDK might be of interest to you: https://github.com/Azure/azure-webjobs-sdk-extensions. For example:
// When new files arrive in the "import" directory, they
// are uploaded to a blob container then deleted.
public static void ImportFile(
[FileTrigger(@"import\{name}", "*.dat", autoDelete: true)] Stream file,
[Blob(@"processed/{name}")] CloudBlockBlob output,
string name,
TextWriter log)
{
output.UploadFromStream(file);
file.Close();
log.WriteLine(string.Format("Processed input file '{0}'!", name));
}