Как уменьшить размер пакета Django для использования в AWS лямбде? - PullRequest
0 голосов
/ 04 августа 2020

Мой технический стек: Django, Zappa, AWS lambda (+ API-шлюз, облачные часы и т. Д.).

Максимальный размер пакета кода функции для AWS lambda составляет 50MB.

Но мой размер посылки 47MB.

Как я могу уменьшить размер посылки?

1 Ответ

0 голосов
/ 04 августа 2020

Первым шагом было бы выяснить, что именно он занимает столько места. Запустите zappa package и проверьте полученный ZIP-файл. Добавьте все, что не нужно, в список exclude в вашем zappa_settings. Обратите внимание, что эта функциональность несколько ограничена в том, что она может исключить; см. в этой статье как добавить параметр regex_excludes, который может удалить больше файлов с помощью сопоставления регулярных выражений.

Самым большим, вероятно, будет stati c assets. Обслуживайте их с S3, а не через сервер Lambda Django. Пакет django -s3-storage очень полезен. Установите его и настройте в своем settings.py примерно так:

STATICFILES_STORAGE = 'django_s3_storage.storage.StaticS3Storage'
AWS_S3_BUCKET_NAME_STATIC = os.environ['STATIC_BUCKET']
AWS_S3_CUSTOM_DOMAIN = os.environ.get('AWS_S3_CUSTOM_DOMAIN', f'{AWS_S3_BUCKET_NAME_STATIC}.s3.amazonaws.com')
STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/'

(я использую переменные среды из файла настроек Zappa, чтобы настроить это на каждом этапе, вы можете настроить это как хотите. )

Затем после развертывания в Lambda запустите другую команду для развертывания ваших файлов c stati:

$ zappa update
$ ./manage.py collectstatic

Убедитесь, что файлы stati c исключены из пакета Lambda, как описано выше. Комбинируя эти методы, вы сможете уменьшить размер упаковки; размер моих развертываний в настоящее время составляет около 25 МБ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...