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

使用Python脚本从Azure容器下载Blob CSV文件失败:只读文件系统错误

解决Azure Functions中下载Blob到本地目录的只读文件系统错误

问题原因

Azure Functions的/home/site/wwwroot目录是部署代码的位置,默认是只读的,即使设置FUNCTION_APP_EDIT_MODE=readwrite也只是允许在线编辑函数代码,并非开放整个目录的写入权限。你之前尝试写入这个目录才会触发Errno 30错误。

可行解决方案

1. 直接使用临时目录/tmp存储下载的文件

/tmp是Azure Functions中唯一支持写入的临时目录,所有文件操作都应该在这里进行。修改你的代码如下:

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


def main(mytimer: func.TimerRequest) -> None:
    utc_timestamp = datetime.datetime.utcnow().replace(
        tzinfo=datetime.timezone.utc).isoformat()

    if mytimer.past_due:
        logging.info('The timer is past due!')

    logging.info('Python timer trigger function ran at %s', utc_timestamp)

    # Azure Blob Storage credentials
    account_name = ''
    account_key = ''
    container_name = ''
    connection_string = f""  # 填入你的Blob存储连接字符串

    # Connect to Blob Storage
    blob_service_client = BlobServiceClient.from_connection_string(connection_string)
    blob_client = blob_service_client.get_blob_client(container=container_name, blob="blob.csv")
    
    # 使用/tmp目录作为存储路径
    filepath = "/tmp"
    # 确保文件名与Blob名称一致,避免混淆
    full_path = os.path.join(filepath, "blob.csv")
    with open(file=full_path, mode="wb") as sample_blob:
        download_stream = blob_client.download_blob()
        sample_blob.write(download_stream.readall())
    
    # 在这里添加后续的文件处理逻辑(比如读取CSV、数据处理等)
    logging.info(f"文件已成功下载到临时目录: {full_path}")

2. 后续文件操作的注意事项

  • /tmp目录的文件会在函数实例被回收时被清空,所以如果需要持久化处理后的文件,不要尝试复制到/home目录(本身只读),而是直接将处理后的文件上传回Azure Blob存储或者其他持久化存储服务(比如Azure SQL、Cosmos DB等)。
  • 如果需要长期保存文件,建议处理完成后立即上传到Blob存储,避免实例回收导致文件丢失。

为什么之前的尝试无效?

  • FUNCTION_APP_EDIT_MODE=readwrite仅用于允许在Azure门户中编辑函数代码,不能改变/home/site/wwwroot目录的只读属性。
  • 无法从/tmp复制到/home是因为/home本身就是只读的,这个限制是Azure Functions运行环境的固有设定,无法绕过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 11:27:18