写入 Azure 函数中的文件失败
Posted
技术标签:
【中文标题】写入 Azure 函数中的文件失败【英文标题】:Write to a file within Azure Function failing 【发布时间】:2021-08-05 18:24:43 【问题描述】:目前,我正在让我的 azure 函数(在 python 中)动态写入一个 plist 文件,以便通过 ios 设备上的浏览器下载应用程序。这在本地工作正常,但是当它发布到 Azure 时,我收到内部服务器错误 500,并且在调用函数时无法写入文件。这是我的代码 sn-p:
pList =
'items': [
'assets': [
'kind': 'software-package',
'url': ipaUrl
,
'kind': 'display-image',
'needs-shine': False,
'url': imageUrl
],
'metadata':
'bundle-identifier': bundleName,
'bundle-version': f'versionName (buildName)',
'kind': 'software',
'title': appName
]
with open('list.plist', 'wb') as file:
plistlib.dump(pList, file)
有什么建议吗?我不确定函数在部署时是否支持读取/写入文件,所以这可能是我的问题。
【问题讨论】:
有一个小的本地存储可用于正在运行的函数,因此您需要确保在那里写入文件并且它们不会太大。否则,需要使用其他一些存储,例如 blob 或挂载的文件共享 您知道这个本地存储在哪个目录下可用吗?我的 plist 文件是 1kb,所以大小不是问题。 路径将取决于操作系统——它应该在有关在函数中处理文件的文档或指南中。通常在D
驱动器上。
【参考方案1】:
如果您的文件可以是临时的,您可以使用临时存储: https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-python?tabs=azurecli-linux%2Capplication-level#temporary-files
您还可以访问根文件夹 - 但取决于操作系统类型。 https://azurelessons.com/how-to-access-azure-functions-wwwroot-folder/
如果您需要永久存储文件,最好将您的应用链接到存储帐户(blob 存储)。 (使用输出绑定或在 SDK 中) https://docs.microsoft.com/en-us/azure/azure-functions/functions-add-output-binding-storage-queue-vs-code?pivots=programming-language-python
【讨论】:
谢谢。使用临时存储对我有用。以上是关于写入 Azure 函数中的文件失败的主要内容,如果未能解决你的问题,请参考以下文章
WinSCP .NET 程序集失败,在 C# Azure 函数中的 Session.Open 中出现“未找到 winscp.exe 可执行文件”
使用 MSI 从 Azure 函数将文件写入 Azure Data Lake 时出错
Azure devops 中的 Docker 构建失败并显示消息无法加载文件或程序集“Microsoft.CodeAnalysis,