【问题标题】:How to best use Python 3's mimetypes module in AWS Lambda?如何在 AWS Lambda 中最好地使用 Python 3 的 mimetypes 模块?
【发布时间】:2019-07-11 23:30:14
【问题描述】:

我通过 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 包,但它们已经多年没有碰过。

我在这里忽略了哪些最佳实践?

【问题讨论】:

    标签: python amazon-web-services aws-lambda mime-types


    【解决方案1】:

    我认为基于 AWS lambda 的结构,它不会包含你想要的,或者至少是你想要的。

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

    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")
    

    【讨论】:

      猜你喜欢
      • 2021-10-30
      • 1970-01-01
      • 2017-09-05
      • 2021-09-02
      • 2019-03-13
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 2019-08-08
      相关资源
      最近更新 更多