当前位置: 首页 > 知识库问答 >
问题:

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

酆英达
2023-03-14

请帮助解决此问题。

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

共有1个答案

卢书
2023-03-14

只需创建在这 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

 类似资料:
  • 是否可以使用ARM模板在Azure中创建虚拟机(Ubuntu Linux),我将在其中存储。存储帐户中的vhd文件,并且在单独的Azure资源组(客户端)中部署时,将使用访问密钥访问存储帐户以部署VM。 我使用下面的命令将VHD复制到我的RG中的存储帐户。

  • 我想要实现什么 通过Azure Function连接到位于防火墙后面的Azure BLOB存储帐户。 迄今为止采取的步骤 Azure Function针对按预期工作的公共存储帐户开发和测试。 在我的Azure Function的Azure资源管理器之后,我找到出站地址(条目),并将它们添加到存储帐户的防火墙中。 问题 在尝试对具有防火墙的存储帐户运行Azure功能时,我收到一个状态:500内部服务

  • 所以我认为这里有2个场景: 每个地区(西欧除外)创建一个大型存储帐户,每个应用程序创建一个容器。存储帐户转到每个区域的资源组 1的退税: > 容器被设计为具有扁平结构(您可以创建文件夹,但这并不明显) 2的退税: 很多存储帐户 考虑到这一点,我想说为每个应用程序创建存储帐户是一个更好的选择,但也许我遗漏了一些东西。 所以问题是:在这里有其他的事情要比另一个更好的选择吗?也许是成本? 我偶然发现了一

  • 问题 我的应用程序服务无法访问(未经授权的存储例外)存储帐户。这两个资源都在同一个资源组(即资源组XYZ)中。 存储帐户具有其网络"允许从"到"所选网络"的访问。从这里,我配置了一个虚拟网络,并在防火墙部分包括所有出站IP地址。 请注意,如果我将网络“允许从”设置为“所有网络”,则一切正常。 我的怀疑 我注意到我的应用程序服务不在存储帐户配置的虚拟网络上。由于某些错误,我无法添加vnet(在应用程

  • 我正在尝试创建一个Azure Function(. NET核心)以从存储帐户检索SaS,并且难以理解为什么我无法访问存储。 函数签名: 索引方法“GetBlobSaS”Microsoft时出错。蔚蓝色的网络作业。主机:无法将参数“storage”绑定到类型StorageAccount。确保绑定支持参数类型。如果您使用的是绑定扩展(例如Azure Storage、ServiceBus、Timers等

  • 我有一个函数应用,定义如下 其中< code > let-test-this-in 和< code > let-test-this-out 是连接字符串为< code >“defaultendpointsprocol=”的存储帐户下现有存储队列的名称...;account name =…;AccountKey= ... "(直接从门户中的访问键-连接字符串复制而来)。我发布时生成的function