Развертывание Python AWS Lambda — пакет Zappa без требований Zappa

Я хочу упаковать и развернуть простой проект на AWS Lambda с помощью Zappa, но без накладных расходов, связанных с требованиями Zappa.
Учитывая этот простой сценарий:

lambda_handler.py

def handle(event, context):
    print('Hello World')  

У меня есть скрипт deploy.sh, который делает это:

#!/usr/bin/env bash
source venv/bin/activate
zappa package -o lambda.zip
aws lambda update-function-code --function-name lambda-example --zip-file fileb://./lambda.zip

Это работает, НО окончательный файл lambda.zip намного больше, чем должен быть: введите здесь описание изображения

Я знаю, что для этого конкретного случая Zappa не нужен, но в реальном проекте я использую некоторые библиотеки, которые требуют https://github.com/Miserlou/lambda-packages, и проще всего их установить с помощью Zappa.

Как сгенерировать лямбда-пакет Python без этих накладных расходов?


person joaoricardo000    schedule 27.09.2018    source источник
comment
Вы пытались использовать параметр исключения для zappa package? github.com/Miserlou/Zappa#package Также не похоже, что все в лямбда- пакеты были добавлены, поэтому я предполагаю, что все эти пакеты, которые вы видите, действительно нужны вашему приложению?   -  person bdbd    schedule 28.09.2018
comment
Не совсем, все эти пакеты — требования Zappa. Zappa делает намного больше, чем просто упаковка. exclude будет работать, но некоторые пакеты имеют некоторые общие зависимости, так что это не так просто, потребуется некоторая проверка.   -  person joaoricardo000    schedule 28.09.2018


Ответы (1)


Во-первых, вы можете использовать slim_handler, который позволяет загружать файлы размером более 50 МБ. Во-вторых, как уже упоминалось @bddb, вы можете исключить некоторые файлы, такие как .pyc, zip и т. д., с помощью свойства exclude. Пожалуйста, найдите более подробную информацию здесь:

https://github.com/Miserlou/Zappa#package

Вот пример того, как может выглядеть ваш zappa_settings.json:

 {
    "dev": {
...
        "slim_handler": false, // Useful if project >50M. Set true to just upload a small handler to Lambda and load actual project from S3 at runtime. Default false.
        "exclude": ["*.gz", "*.rar"], // A list of regex patterns to exclude from the archive. To exclude boto3 and botocore (available in an older version on Lambda), add "boto3*" and "botocore*".
    }
}
person Rene B.    schedule 18.06.2019