Как лучше всего использовать модуль mimetypes в Python 3 в AWS Lambda? - PullRequest
0 голосов
/ 12 июля 2019

Я развернул работающее приложение Flask на AWS Lambda через Zappa. Одна из вещей, которые работают локально, но не на Lambda, это вызов

mimetypes.guess_extension

В частности, локально, на моем Mac, предполагаемое расширение для

application/vnd.openxmlformats-officedocument.wordprocessingml.document

правильно

.docx

но на лямбде это

None

Способ работы mimetypes заключается в том, что он обращается к файлу mime.types хост-машины, и этот файл либо не существует в Lambda, либо что-то существует, но он не имеет много типов.

Так как заставить этот модуль работать на Lambda? В документации упоминается функция init в модуле, которая принимает файлы, но это не подходит для Lambda. Я мог бы, я думаю, связать весь файл 48K mime.types на моем Mac в развернутую Lambda (как файл?), Но это кажется излишним, и мне было интересно, если я что-то пропустил, и что Lambdas должен есть доступ к этой информации без загрузки файлов?

Я проверил PyPI и нашел пакеты mime и common-mimetypes, но они не трогались годами.

Какие-нибудь лучшие практики, которые я здесь пропускаю?

1 Ответ

1 голос
/ 12 июля 2019

Я думаю, что исходя из структуры лямбды AWS, она не будет содержать то, что вы хотите или, по крайней мере, все, что вы хотите.

Вместо загрузки файла в лямбду, я предложу загрузить файлв какое-то облачное хранилище, такое как ваше хранилище 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")
...