写入 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 时出错

NodeJs Azure 函数中的临时文件夹位置问题

从 azure 数据工厂调用 azure 函数端点时出错

Azure devops 中的 Docker 构建失败并显示消息无法加载文件或程序集“Microsoft.CodeAnalysis,

将csv数据直接写入节点js中的azure blob