如何创建Azure函数以访问多个Azure Blob存储帐户?

时间:2018-11-28 11:29:06

标签: azure azure-functions azure-storage-blobs

请帮助解决此问题。

我有两个Azure blob存储帐户storage1和storage2,如何编写一个Azure函数,一旦将任何文件上传到存储帐户,该函数就会触发。

1 个答案:

答案 0 :(得分:0)

您可以仅创建在这2个不同的blob上触发的2个函数,并创建一种用于处理文件的方法,如下所示:

功能1:

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);            
    }
}

功能2:

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