Вы можете просто создать 2 функции, которые срабатывают на этих 2 разных BLOB-объектах, и создать один метод для обработки файлов, например, так:
Function1:
public static class Function1
{
[FunctionName("Function1")]
public static void Run([BlobTrigger("samples-workitems/{name}", Connection = "")]Stream myBlob, string name, ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
new MySharedCode().Process(myBlob, name, log);
}
}
Function2:
public static class Function2
{
[FunctionName("Function2")]
public static void Run([BlobTrigger("samples-workitems/{name}", Connection = "AzureWebJobsStorage2")]Stream myBlob, string name, ILogger log)
{
new MySharedCode().Process(myBlob, name, log);
}
}
И у вас есть общий код для обработки загруженных файлов:
class MySharedCode
{
internal void Process(Stream myBlob, string name, ILogger log)
{
// Process the file
}
}
В файле настроек вы должны настроить строки подключения к хранилищу:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "{connection string to storage1}",
"AzureWebJobsStorage2": "{connection string to storage2}",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
}
}
У меня отлично работает.Идея основана на этой теме GitHub: https://github.com/Azure/azure-functions-host/issues/1544