Durable Functions is an extension of Azure Functions and Azure WebJobs that lets you write stateful functions in a serverless environment. The primary use case for Durable Functions is simplifying complex, stateful coordination problems in serverless applications.
This application demonstrate following functionalities:
- usage of Azure durable functions,
- dependency injection with Autofac (inspired by Holger Leichsenring Blog Post),
- logging with Serilog sink to Azure Table storage,
- using Table storage as an temporary repository,
- copying files to blobs
Because of cross function communication limitations I've used Table Storage as an temporary repository for list of all files to be backed up. Sure, there is a number of ways to do this but I've choose Table Storage.
- Visual Studio 2017 15.5.5 or greater
- Azure Storage Emulator (the Storage Emulator is available as part of the Microsoft Azure SDK)
To create and deploy functions, you also need:
- An active Azure subscription. If you don't have an Azure subscription, free accounts are available.
- An Azure Storage account. To create a storage account, see Create a storage account.
First, you have to enter your Azure storage account connection string (and other settings) into local.settings.json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "UseDevelopmentStorage=true",
"Logging.Storage.TableName": "BackupFolderLog",
"BackupFolder.TableName": "BackupFolder",
"BackupFolder.ContainerName": "backupfolder",
"StorageAccount.ConnectionString": "UseDevelopmentStorage=true"
}
}
P.S. More about how to test Azure functions locally you can read here.
Second, if you use development storage you have to setup Azure Storage Emulator. See Use the Azure storage emulator for development and testing and Configuring and Using the Storage Emulator with Visual Studio.
Third, build solution and run it with local Azure Functions runtime:
And when function is finished, you should receive succeed status:
Finally test it with Postman:
Results you can check easy with excellent Azure Storage Explorer (you can download it for free):
Enjoy!