@Samy Abdul Azure Functions should be a good fit here for your use case.
- You could use a Timer Trigger to periodically check for new files in SFTP by keeping track of ones already processed or even manually trigger via HTTP as per your requirement.
- Depending on the language, read the ZIP file. For C#, you can use the built-in System.IO.Compression.ZipFile APIs.
- Then you could use an SDK to work with the excel files like Open XML SDK for Office for C#.
- And finally leverage Blob Output Binding to store into Blob Storage. Also, with multi-protocol support, the bindings can also directly output to a hierarchical namespace as well.
Depending on how big the files, you could consider splitting this into multiple functions as well. One for extracting from the ZIP file and output them temporarily into blob storage and have a second one that picks up the XLSX files for processing and outputting to blob storage. This approach will also parallelize the processing instead of going over each file one by one.
You could even consider using Durable Functions to create a more organized workflow that can periodically check for new files and fan-out processing for each zip file and excel files within each.