【问题标题】:Python AWS Lambda deploy - Zappa package without Zappa requirementsPython AWS Lambda 部署 - 没有 Zappa 要求的 Zappa 包
【发布时间】:2018-09-27 22:12:38
【问题描述】:

我想使用 Zappa 在 AWS Lambda 上打包和部署一个简单项目,但没有 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 lambda 包?

【问题讨论】:

  • 您是否尝试对zappa package 使用排除设置? github.com/Miserlou/Zappa#package 此外,似乎 lambda-packages 中的所有内容都没有添加,所以我假设您看到的所有这些包都是您的应用程序实际需要的?
  • 并非如此,所有这些软件包都是 Zappa 要求的。 Zappa 做的不仅仅是包装。 exclude 可以,但是有些包有一些共享依赖,所以不是那么简单,需要一些验证。

标签: python aws-lambda zappa


【解决方案1】:

首先,您可以使用 slim_handler 允许上传大于 50M 的文件。其次,正如@bddb 已经提到的,您可以使用 exclude 属性排除一些文件,例如 .pyc、zip 等。请在此处找到更多详细信息:

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*".
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 2019-06-10
    相关资源
    最近更新 更多