azure-functions - 如何将 Azurite blob 容器用作 Azure Function 内部存储和触发器?

标签 azure-functions azure-storage-explorer azurite

我已按照说明下载并安装 Azurite for Linux (Ubuntu 18.04)。我想将它与 Azure 存储资源管理器(也已下载并安装)一起使用,以通过 BlobTrigger 直观地管理/测试 Azure 函数。我了解如何启动 Azurite,并且可以使用 Storage Exporer 将 blob 上传到模拟器容器。
想不通:

  • 如何将 Azure Function 连接到 Azurite 容器以用作 Functions 内部存储。
    一种。我用过 "AzureWebJobsStorage": "UseDevelopmentStorage=true"local.settings.json ,但我没有看到如何将函数连接到 Azurite 中的给定容器
  • 如何将函数连接到 Azurite 容器以实现 BlobTrigger 功能。
    一种。我是否需要添加 "BlobTrigger": "<azuriteContainerConnectionString>"设置为 local.settings.json ?
  • 最佳答案

    基本上, local.settings.json 中的值用于保存环境变量。
    连接字符串在 function.json 中声明。如果你使用的是C#或Java(需要编译的语言,不是直接运行的语言),那么它总是有一个声明部分,编译后声明部分会被转换为function.json。
    我在本地启动了 Azurite,并尝试使用默认存储帐户:
    我得到 blob 服务的默认连接字符串:

    DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
    
    我用 blobtrigger 创建了一个 C# azure 函数:
    local.settings.json
    {
        "IsEncrypted": false,
      "Values": {
        "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=0730bowmanwindow;AccountKey=xxxxxx==;EndpointSuffix=core.windows.net",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet",
        "str": "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;"
      }
    }
    
    Function1.cs
    using System;
    using System.IO;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Host;
    using Microsoft.Extensions.Logging;
    
    namespace FunctionApp1
    {
        public static class Function1
        {
            [FunctionName("Function1")]
            public static void Run([BlobTrigger("test/{name}", Connection = "str")]Stream myBlob, string name, ILogger log)
            {
                log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
            }
        }
    }
    
    它似乎工作正常:
    enter image description here
    我设置了AzureWebJobsStorage到 azure 上的存储,因为使用了 10000 端口。
    这是文档:
    https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azurite?toc=/azure/storage/blobs/toc.json
    

    关于azure-functions - 如何将 Azurite blob 容器用作 Azure Function 内部存储和触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63980218/

    相关文章:

    Azure 服务总线,使用过滤器将大消息组装成较小的消息

    azure-functions - 如何添加 Azure Functions 扩展

    azure - 无法在 Azure 存储资源管理器中按修改日期/时间对文件进行排序

    azure - 对 Azure 存储资源管理器中的确切容器的私有(private)访问

    azure-functions - 在 Visual Studio 2022 中调整服务依赖项启动参数

    docker - 蓝铜矿容器不暴露 ssl

    AZURE REST API - 作为 Azure 应用服务或 Azure 函数应用的快速 API,以 Http 触发的函数作为端点?

    azure - 使用事件中心捕获的优点

    azure-blob-storage - 如何在 Azure 存储资源管理器中按名称搜索 blob 文件?

    azure - TableOperation.Insert 始终返回 Conflict 409,TableOperation.InsertOrReplace 成功