使用Zappa将烧瓶应用程序转换为AWS Lambda

问题描述

我有一个flask_application,它将完成一些简单的任务。

我的要求:我想借助flask_application

将此zappa部署为aws lambda_function。

要执行我的flask_application作为lambda函数,我正在执行

  1. zappa初始化
  2. zappa包

然后我将压缩文件上传到lambda并运行我的lambda函数

我的问题: 每当我运行zappa init命令时,它就会使用以下信息创建一个zappa_setting.json文件

{
    "dev": {
        "app_function": "flask.main.app","aws_region": "us-east-1","profile_name": "dev","project_name": "flask","runtime": "python3.6","s3_bucket": "zappa-p5m0kuurp"
    }
}

我有3个aws环境,每个环境都有各自的存储桶,例如

test  ==> zappa_test_bucket
stage ==> zappa_stage_bucket
prod  ==> zappa_prod_bucket

我想通过提供自定义zappa_settings.json在所有3个aws环境中部署我的flask应用程序。

问题: 有没有一种方法可以将zappa_settings.json提供为文件,然后每当我运行zappa init时,zappa都会将此文件作为输入并根据环境设置这些环境变量。

zappa_settings.json

{
    "test": {
        "app_function": "flask.main.app","s3_bucket": "zappa_test_bucket"
    },"stage": {
        "app_function": "flask.main.app","s3_bucket": "zappa_stage_bucket"
    },"prod": {
        "app_function": "flask.main.app","s3_bucket": "zappa_prod_bucket"
    }


}

如果有人有想法,请告诉我

解决方法

据我了解,您每次部署代码时都使用zappa init。之后,您手动upload your code to lambda

您必须充分利用zappa的功能:

  • 仅使用zappa init一次。
  • 仅更新一次zappa_settings.json文件。
  • 从现在开始,使用zappa deploy dev/stage/prod
  • 进行部署

请参阅此最低here以了解更多信息。

如果我缺少某些内容,而您确实必须传递zappa_settings.json文件,则无法传递该文件,但是可以将备份作为zappa_settings.json.backup并在{{ 1}},您可以致电zappa init。这样可以避免您一次又一次地创建该文件。