请帮助解决此问题。
我有两个 Azure Blob 存储帐户 storage1 和 storage2,如何编写一个 Azure 函数,该函数应在任何文件上传到存储帐户后触发。
最佳答案
您可以只创建在这 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
关于azure - 如何创建azure函数来访问多个azure blob存储帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53518432/