I am trying to deploy a flask app that run very well locally to AWS Lambda using severless
. The deployment is good but I can't use the aws lambda app. I get an error 502 Bad Gateway
message: Internal server error
.
I checked the logs and here what I found:
2021-03-12T01:49:27.685+01:00 Traceback (most recent call last):
2021-03-12T01:49:27.685+01:00 File "/var/task/wsgi_handler.py", line 44, in import_app
2021-03-12T01:49:27.685+01:00 wsgi_module = importlib.import_module(wsgi_fqn_parts[-1])
2021-03-12T01:49:27.685+01:00 File "/var/lang/lib/python3.8/importlib/__init__.py", line 127, in import_module
2021-03-12T01:49:27.685+01:00 return _bootstrap._gcd_import(name[level:], package, level)
2021-03-12T01:49:27.685+01:00 File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
2021-03-12T01:49:27.685+01:00 File "<frozen importlib._bootstrap>", line 991, in _find_and_load
2021-03-12T01:49:27.685+01:00 File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
2021-03-12T01:49:27.685+01:00 File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
2021-03-12T01:49:27.685+01:00 File "<frozen importlib._bootstrap_external>", line 783, in exec_module
2021-03-12T01:49:27.685+01:00 File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2021-03-12T01:49:27.685+01:00 File "/var/task/app.py", line 10, in <module>
2021-03-12T01:49:27.685+01:00 from common.helpers import *
2021-03-12T01:49:27.685+01:00 File "/var/task/common/helpers.py", line 1, in <module>
2021-03-12T01:49:27.685+01:00 from common.db import db
2021-03-12T01:49:27.685+01:00 File "/var/task/common/db.py", line 1, in <module>
2021-03-12T01:49:27.685+01:00 from flask_pymongo import pymongo
2021-03-12T01:49:27.685+01:00 ModuleNotFoundError: No module named 'flask_pymongo'
2021-03-12T01:49:27.686+01:00 [ERROR] Exception: Unable to import app.app Traceback (most recent call last): File "/var/lang/lib/python3.8/imp.py", line 234, in load_module return load_source(name, filename, file) File "/var/lang/lib/python3.8/imp.py", line 171, in load_source module = _load(spec) File "<frozen importlib._bootstrap>", line 702, in _load File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 783, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/var/task/wsgi_handler.py", line 119, in <module> wsgi_app = import_app(config) File "/var/task/wsgi_handler.py", line 49, in import_app raise Exception("Unable to import {}".format(config["app"]))
2021-03-12T01:49:27.803+01:00 START RequestId: cd231555-23cb-4444-b6fe-36e2ce590dc7 Version: $LATEST
2021-03-12T01:49:29.040+01:00 Traceback (most recent call last):
2021-03-12T01:49:29.040+01:00 File "/var/task/wsgi_handler.py", line 44, in import_app
2021-03-12T01:49:29.040+01:00 wsgi_module = importlib.import_module(wsgi_fqn_parts[-1])
2021-03-12T01:49:29.040+01:00 File "/var/lang/lib/python3.8/importlib/__init__.py", line 127, in import_module
2021-03-12T01:49:29.040+01:00 return _bootstrap._gcd_import(name[level:], package, level)
2021-03-12T01:49:29.040+01:00 File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
2021-03-12T01:49:29.040+01:00 File "<frozen importlib._bootstrap>", line 991, in _find_and_load
2021-03-12T01:49:29.040+01:00 File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
2021-03-12T01:49:29.040+01:00 File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
2021-03-12T01:49:29.040+01:00 File "<frozen importlib._bootstrap_external>", line 783, in exec_module
2021-03-12T01:49:29.040+01:00 File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2021-03-12T01:49:29.040+01:00 File "/var/task/app.py", line 10, in <module>
2021-03-12T01:49:29.040+01:00 from common.helpers import *
2021-03-12T01:49:29.040+01:00 File "/var/task/common/helpers.py", line 1, in <module>
2021-03-12T01:49:29.040+01:00 from common.db import db
I don't understand ModuleNotFoundError: No module named 'flask_pymongo'
When I use the app in local I don't have this. I've tried to install it anyway but it still doesn't work.
My serverless
config:
service: serverless-flask
plugins:
- serverless-python-requirements
- serverless-wsgi
custom:
wsgi:
# This is the file name and the app name of the application
# Where file name is app.py and Flask app name is app
# ie. app = Flask(__name__)
app: app.app
packRequirements: false
pythonRequirements:
dockerizePip: non-linux
provider:
name: aws
runtime: python3.8
stage: dev
region: us-east-1
functions:
app:
handler: wsgi.handler
events:
- http: ANY /
- http: 'ANY {proxy+}'
Any suggestion?
Can you try packaging & installing your module in a containerised lambda env.
As sometimes modules packed in windows will not work on other os.
I had a similar issue with psycopg2 then installed and packaged in lambci docker and everything was working fine.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.