如何在 AWS Lambda 中最好地使用 Python 3 的 mimetypes 模块?

How to best use Python 3's mimetypes module in AWS Lambda?

我通过 Zappa 将一个可用的 Flask 应用程序部署到 AWS Lambda。在本地工作但在 Lambda 上不工作的事情之一是调用

mimetypes.guess_extension

特别是在本地,在我的 Mac 上,

的猜测扩展名
application/vnd.openxmlformats-officedocument.wordprocessingml.document

正确

.docx

但在 Lambda 上,它是

None

mimetypes 的工作方式是查询主机的 mime.types 文件,而这个文件要么在 Lambda 上不存在,要么存在但类型不多。

那么如何让这个模块在 Lambda 上运行呢? documentation 在接受文件的模块中提到了一个 init 函数,但这似乎不适合 Lambda。我可以,我猜想将 Mac 上的整个 48K mime.types 文件捆绑到我部署的 Lambda 中(作为文件?),但这似乎有点过头了,我想知道我是否错过了什么Lambdas 应该 无需上传文件即可访问此信息?

我检查了 PyPI 并找到了包 mimecommon-mimetypes,但它们已经多年没有被触及了。

我在这里忽略了任何最佳实践吗?

我认为基于 AWS lambda 的结构,它不会包含您想要的,或者至少不会包含您想要的所有内容。

我建议将文件上传到某些云存储,例如您的 s3 存储,而不是将文件上传到 lambda。并使用该文件初始化您的程序而不将其存储在磁盘上。

mime = MimeTypes()
with requests.get(url) as res:
    mime_file = BytesIO(res.content)
mime.readfp(mime_file)

mime.guess_extension("application/vnd.openxmlformats-officedocument.wordprocessingml.document")