如何在Azure函数中访问约50MB的中型静态文件?
解决Azure函数调用时使用50MB静态文件的方案
借助本地临时存储复用文件
Azure函数实例提供了临时存储目录,可通过TEMP或TMP环境变量获取路径。你可以在函数首次调用时,从Azure Blob Storage这类外部存储下载50MB的静态文件到临时目录,后续同一实例的调用直接读取本地文件即可。实例回收时临时文件会被清除,但新实例启动时重新下载一次就行,能有效减少重复下载的开销。示例代码如下:import os from azure.storage.blob import BlobServiceClient def main(req): temp_dir = os.environ.get("TEMP") target_file = os.path.join(temp_dir, "static_file.bin") if not os.path.exists(target_file): # 从Blob Storage下载文件,需提前在函数配置中添加存储连接字符串 blob_client = BlobServiceClient.from_connection_string( os.environ["STORAGE_CONN_STR"] ).get_blob_client(container="static-files", blob="your-file") with open(target_file, "wb") as f: f.write(blob_client.download_blob().readall()) # 这里写使用静态文件的业务逻辑 return "File ready for use"将文件打包进部署包
如果你的函数使用专用计划或弹性高级计划,直接把静态文件和函数代码一起打包部署即可。即使是消耗计划,50MB的文件也在250MB的部署包大小限制内,只是冷启动时间会略有增加。代码中直接通过相对路径访问文件:import os def main(req): file_path = os.path.join(os.path.dirname(__file__), "static_file.bin") # 执行文件相关操作 return "File loaded"挂载Azure Files共享
要是需要多个实例共享同一份静态文件,或者文件需要长期保留且偶尔更新,可以把Azure Files共享挂载到函数实例的文件系统。在Azure门户的函数应用配置里找到"存储挂载"选项,完成挂载配置后,代码就能直接通过挂载路径访问文件,无需每次下载,适合文件复用率高的场景。
内容的提问来源于stack exchange,提问作者Lakshay Dulani
相关产品推荐
相关产品推荐

