我正在使用 zappa 将后端部署到 AWS Lambda。它运行得很好,直到我决定使用 PostgreSQL。我在设置中添加了这样的内容:
\nDATABASES = {\n 'default': {\n 'ENGINE': 'django.db.backends.postgresql',\n 'NAME': config('DATABASE_NAME'),\n 'USER': config('DATABASE_USER'),\n 'PASSWORD': config('DATABASE_PASSWORD'),\n 'HOST': config('DATABASE_HOST'),\n 'PORT': '5432'\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n我正在使用 AWS RDS。我安装了 psycopg2-binary 和 psycopg2 (版本 2.8.6),但问题仍然存在。python版本是3.8。
\n完整的错误日志:
\n [1621168086542] [ERROR] ImproperlyConfigured: Error loading psycopg2 module: No module named 'psycopg2._psycopg'\nTraceback (most recent call last):\n\xc2\xa0\xc2\xa0File "/var/task/handler.py", line 609, in lambda_handler\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0return LambdaHandler.lambda_handler(event, context)\n\xc2\xa0\xc2\xa0File "/var/task/handler.py", line 240, in lambda_handler\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0handler = cls()\n\xc2\xa0\xc2\xa0File "/var/task/handler.py", line 146, in __init__\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0wsgi_app_function = get_django_wsgi(self.settings.DJANGO_SETTINGS)\n\xc2\xa0\xc2\xa0File "/var/task/zappa/ext/django_zappa.py", line 20, in get_django_wsgi\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0return get_wsgi_application()\n\xc2\xa0\xc2\xa0File "/var/task/django/core/wsgi.py", …
Run Code Online (Sandbox Code Playgroud) 在尝试部署我的 AWS Lambda 函数时在我的 Stacktrace 上出现此错误
(python-dateutil 2.8.1 (/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages), Requirement.parse('python-dateutil<2.7.0'), {'zappa'})
Calling deploy for stage development..
Oh no! An error occurred! :(
==============
Traceback (most recent call last):
File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/cli.py", line 2778, in handle
sys.exit(cli.handle())
File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/cli.py", line 512, in handle
self.dispatch_command(self.command, stage)
File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/cli.py", line 549, in dispatch_command
self.deploy(self.vargs['zip'])
File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/cli.py", line 709, in deploy
self.zappa.create_iam_roles()
File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/core.py", line 2557, in create_iam_roles
role, credentials_arn = self.get_credentials_arn()
File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/zappa/core.py", line 2536, in get_credentials_arn
self.credentials_arn = role.arn
File "/Users/supratik/.local/share/virtualenvs/api_sourcer-sM-JSZy3-/Users/supratik/.pyenv/shims/python/lib/python3.6/site-packages/boto3/resources/factory.py", line 339, …
Run Code Online (Sandbox Code Playgroud) 我目前在 AWS Lambda 上使用 Zappa/Flask (Py 3.7) 有一个 API
我的 zappa_Settings.json 文件如下所示:
{
"beta": {
"app_function": "application.application",
"profile_name": "changed",
"project_name": "changed",
"runtime": "python3.7",
"s3_bucket": "zappa-<obscured>"
}
}
Run Code Online (Sandbox Code Playgroud)
然而,我们现在正在开发一组新的功能,并且感觉表明我们有一个单独的分支或阶段,例如“测试”,我们在部署这些功能并评估成熟度之前将其推入实时环境。
问题是,尽我所能,我无法从控制台创建新阶段:
zappa init
Run Code Online (Sandbox Code Playgroud)
崩溃与
click.exceptions.ClickException:该项目已经有一个 zappa_settings.json 文件!
zappa init stage2
Run Code Online (Sandbox Code Playgroud)
产生
用法:zappa [-h] [-v] [--color {auto,never,always}] {认证,部署,init,包,模板,调用,管理,回滚,计划,状态,尾部,取消部署,取消计划,更新,shell} ... zappa:错误:无法识别的参数:stage2
zappa deploy stage2
Run Code Online (Sandbox Code Playgroud)
输出
(botocore 1.12.86 (/home/user/Code/Python/project/lib/python3.6/site-packages), Requirement.parse('botocore<1.11.0,>=1.10.82'), {'boto3'})
Calling deploy for stage stage2..
Error: Please define stage 'stage2' in your Zappa settings.
Run Code Online (Sandbox Code Playgroud)
现在,如果我手动为阶段创建条目,则需要有一个 s3 存储桶用于部署。重复使用与第一个实例相同的实例是否安全?我在这里要做什么来部署新阶段?