我有一个flask_application
,它将执行一些简单的任务。
我的要求:我想在zappa
的帮助下,将此flask_application
部署为aws lambda_function
为了将flask_application作为lambda函数运行,我正在执行
- zappa初始化
- 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",
"aws_region": "us-east-1",
"profile_name": "dev",
"project_name": "flask",
"runtime": "python3.6",
"s3_bucket": "zappa_test_bucket"
},
"stage": {
"app_function": "flask.main.app",
"aws_region": "us-east-1",
"profile_name": "dev",
"project_name": "flask",
"runtime": "python3.6",
"s3_bucket": "zappa_stage_bucket"
},
"prod": {
"app_function": "flask.main.app",
"aws_region": "us-east-1",
"profile_name": "dev",
"project_name": "flask",
"runtime": "python3.6",
"s3_bucket": "zappa_prod_bucket"
}
}
如果有人有想法,请告诉我
我所理解的是,每次部署代码时都使用zappa-init。然后手动upload your code to lambda
。
你必须充分利用zappa的功能:
- 只使用
zappa init
一次 - 只需更新一次
zappa_settings.json
文件 - 从现在起,使用
zappa deploy dev/stage/prod
进行部署
请参阅此最小烧瓶zappa教程了解更多信息。
如果我缺少什么东西,并且您真的必须传递zappa_settings.json
文件,您不能传递它,但您可以在存储库中保留一个备份作为zappa_settings.json.backup
,在zappa init
之后,您可以调用cp zappa_settings.json.backup zappa_settings.json
。这将避免您一次又一次从头开始创建该文件。