问题描述
我有一个flask_application
,它将完成一些简单的任务。
我的要求:我想借助flask_application
zappa
部署为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","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
。这样可以避免您一次又一次地创建该文件。