Я развернул работающее приложение Flask на AWS Lambda через Zappa. Одна из вещей, работающих локально, но не в Lambda, — это вызов
mimetypes.guess_extension
В частности, локально, на моем Mac, догадавшееся расширение для
application/vnd.openxmlformats-officedocument.wordprocessingml.document
правильно
.docx
но на лямбде это
None
mimetypes работает так, что он консультируется с файлом mime.types хост-машины, и этот файл либо не существует в Lambda, либо что-то существует, но у него не так много типов.
Так как же заставить этот модуль работать на Lambda? В документация упоминается функция init в модуле, которая принимает файлы, но это не подходит для Lambda. Я мог бы, я думаю, собрать весь файл mime.types размером 48 КБ на моем Mac в мою развернутую Lambda (в виде файла?), но это кажется излишним, и мне было интересно, возможно, я что-то пропустил и что у Lambdas должен есть доступ к этому информация без загрузки файлов?
Я проверил PyPI и нашел пакеты mime и common-mimetypes, но их не трогали годами.
Любые лучшие практики, которые я пропускаю здесь?






Я думаю, исходя из структуры лямбды 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")