You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Azure Functions隔离进程中列出存储容器所有Blob的方法求助

在Azure Functions隔离进程中列出存储容器Blob的实现方法

核心逻辑

隔离进程模式下无法直接复用进程内模式的绑定逻辑,需直接借助Azure.Storage.Blobs SDK完成Blob列表查询,通过依赖注入管理客户端实例以保证性能。

步骤1:安装依赖包

执行命令添加Azure存储SDK:

dotnet add package Azure.Storage.Blobs

步骤2:配置存储连接字符串

在local.settings.json(本地测试)或Azure函数应用配置中心添加连接字符串:

{
  "Values": {
    "StorageConnectionString": "你的存储账户连接字符串",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
  }
}

步骤3:注册Blob服务客户端

在Program.cs中注入BlobServiceClient单例实例:

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureServices(services =>
    {
        services.AddSingleton(_ => new BlobServiceClient(
            Environment.GetEnvironmentVariable("StorageConnectionString")));
    })
    .Build();

host.Run();

步骤4:编写函数实现

以HTTP触发函数为例,注入客户端并查询Blob列表:

public class BlobListFunction
{
    private readonly BlobServiceClient _blobServiceClient;

    public BlobListFunction(BlobServiceClient blobServiceClient)
    {
        _blobServiceClient = blobServiceClient;
    }

    [Function("ListContainerBlobs")]
    public async Task<HttpResponseData> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get")] HttpRequestData req)
    {
        string containerName = "目标容器名称"; // 替换为实际容器名
        var containerClient = _blobServiceClient.GetBlobContainerClient(containerName);

        var blobNames = new List<string>();
        await foreach (var blob in containerClient.GetBlobsAsync())
        {
            blobNames.Add(blob.Name);
        }

        var response = req.CreateResponse(HttpStatusCode.OK);
        await response.WriteAsJsonAsync(new { TotalBlobs = blobNames.Count, BlobNames = blobNames });
        return response;
    }
}

注意事项

  • 生产环境推荐为函数应用分配Storage Blob Data Reader托管标识权限,避免硬编码连接字符串
  • 本地测试可使用UseDevelopmentStorage=true连接Azure存储模拟器
  • 若Blob数量较多,可通过GetBlobsAsync的重载参数设置分页大小和延续令牌实现分批查询

内容的提问来源于stack exchange,提问作者Louis S. Berman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 01:54:22