部署AWS Lambda Serverless服务时遇「Unable to import app.app」错误
问题解决:Serverless部署AWS Lambda后出现"Unable to import app.app"错误
核心问题分析
错误Unable to import app.app的直接原因是serverless-wsgi插件配置错误,同时serverless.yml存在插件语法错误,代码中还存在潜在的导入冲突问题。
具体解决方案
1. 修正WSGI应用指向配置
serverless-wsgi插件要求custom.wsgi.app指向Flask应用实例,格式为[模块名].[实例变量名],而非文件名。你的app.py对应模块名是app,内部Flask实例变量也是app,因此需要修改:
原配置:
custom: wsgi: app: app.py packRequirements: false
修改后:
custom: wsgi: app: app.app packRequirements: true # 改为true,让插件自动打包Python依赖
2. 修复plugins配置的语法错误
原plugins行混入了多余命令,需拆分并修正:
原配置:
plugins: - serverless-wsgi - serverless-python-requirementsset FLASK_APP=Scripts\app.py
修改后:
plugins: - serverless-wsgi - serverless-python-requirements
3. 解决代码中的导入冲突(可选但推荐)
app.py中同时导入urllib.request和flask.request会导致命名冲突,建议重命名urllib的request:
原代码:
from urllib import request from flask import Flask, jsonify, make_response, request
修改后:
from urllib import request as urllib_request from flask import Flask, jsonify, make_response, request
修改后的完整serverless.yml
org: gabadie app: integracion-streak-api service: TEST11 frameworkVersion: '3' custom: wsgi: app: app.app packRequirements: true provider: name: aws runtime: python3.8 functions: api: handler: wsgi_handler.handler events: - http: ANY / - http: 'ANY {proxy+}' plugins: - serverless-wsgi - serverless-python-requirements
验证步骤
- 重新部署服务:
serverless deploy - 测试API端点,确认不再返回500错误
- 查看CloudWatch日志,确认导入错误已消失
内容的提问来源于stack exchange,提问作者Gastón Abadie
相关产品推荐
相关产品推荐

