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

如何创建可连接Blob Storage的Azure API以提交Blob容器内容?

实现Python Azure Function 对接Blob Storage的POST提交API

前置依赖配置

首先在你的函数项目requirements.txt文件中添加所需依赖:

azure-functions
# 如果你用手动SDK调用方案才需要添加下方依赖
# azure-storage-blob

方案1:使用内置Blob输出绑定(推荐,无需手动调用SDK)

配置绑定规则

找到函数目录下的function.json文件,在bindings数组中追加如下配置:

{
  "name": "outputBlob",
  "type": "blob",
  "path": "替换为你的Blob容器名/{rand-guid}",
  "connection": "AzureWebJobsStorage",
  "direction": "out"
}

配置说明:

  • path参数里的{rand-guid}是系统自动生成的随机文件名,你也可以自定义规则,比如要从请求参数取文件名可以写为{filename}
  • connection对应的是存储账户连接字符串的配置名,默认AzureWebJobsStorage是Function App默认绑定的存储账户,如需使用其他存储账户,在Function App的配置页添加对应连接字符串的环境变量即可

修改函数代码

基于你现有的默认HTTP触发代码修改如下:

import azure.functions as func
import logging

def main(req: func.HttpRequest, outputBlob: func.Out[str]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    try:
        # 读取POST请求体内容作为要写入Blob的内容
        post_content = req.get_body().decode('utf-8')
    except:
        return func.HttpResponse(
            "请求内容解码失败,请检查传入格式",
            status_code=400
        )

    # 写入Blob存储
    outputBlob.set(post_content)
    return func.HttpResponse(
        "内容已成功提交到Blob容器",
        status_code=201
    )

方案2:手动调用Blob SDK(适合需要灵活控制Blob操作的场景)

如果需要自定义元数据、判断容器是否存在等复杂操作,可以直接调用Blob存储SDK实现:

import azure.functions as func
import logging
from azure.storage.blob import BlobServiceClient
import os
import uuid

def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    # 从环境变量读取存储账户连接字符串
    storage_conn_str = os.getenv("AzureWebJobsStorage")
    container_name = "替换为你的Blob容器名"

    # 初始化Blob客户端
    blob_service_client = BlobServiceClient.from_connection_string(storage_conn_str)
    container_client = blob_service_client.get_container_client(container_name)

    # 读取请求内容
    post_content = req.get_body()
    # 生成随机文件名
    blob_name = f"{uuid.uuid4().hex}.txt"

    # 上传内容到Blob
    container_client.upload_blob(name=blob_name, data=post_content, overwrite=True)

    return func.HttpResponse(f"文件{blob_name}已成功上传", status_code=201)

注意事项

  • 部署到Azure前需确保Function App的配置中存储连接字符串配置正确
  • 目标Blob容器需要提前在存储账户中创建,或给Function App授予存储账户的容器创建权限

内容的提问来源于stack exchange,提问作者noobdev123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:39:04