AWS App Runner部署Python应用多次失败:健康检查报错且无法获取应用日志
AWS App Runner部署Python应用多次失败:健康检查报错且无法获取应用日志
最近有没有人成功在AWS App Runner上部署过Python应用?我试了各种方法,但每次都卡在同一个错误上:
01-01-2025 04:44:22 PM [AppRunner] Health check failed on protocol `HTTP`[Path: '/'], [Port: '8080']. Check your configured port number. For more information, see the application logs. 01-01-2025 04:44:35 PM [AppRunner] Deployment with ID : 9719e0a9f3814a5d88c90569994bb10c failed. Failure reason : Health check failed.
我从自己的Python应用开始尝试,后来换成了简单的Python Hello World示例项目,包括一些公开的demo代码——甚至是作者在YouTube视频里演示过、号称可以正常运行的项目,我fork之后部署,还是遇到完全一样的问题。
我已经试过以下所有方法,但都没有解决问题:
- 同时用源代码和ECR构建好的镜像作为部署源
- 在AWS控制台配置构建设置,也试过用
apprunner.yaml配置文件 - 修改健康检查配置:调整超时时间,切换TCP/HTTP协议,检查根路径、/health等不同路由
- 最初用FastAPI监听8000端口,后来试过不同的服务器、不同端口,比如8080、80、8000等
- 尝试过Python3运行时,包括Python 3.11版本
更头疼的是日志问题:我在本地运行时能看到应用的启动日志,但在App Runner上完全看不到任何应用日志——只有上面那几条有限的部署错误信息,根本不知道部署过程中到底出了什么问题。比如我在示例代码里特意加了日志输出,本地能正常打印,但App Runner上完全看不到这些内容。
以下是我用的示例代码:
server.py
from wsgiref.simple_server import make_server from pyramid.config import Configurator from pyramid.response import Response import os, logging, sys logging.basicConfig(level=logging.INFO, stream=sys.stdout) logger = logging.getLogger(__name__) def hello_world(request): name = os.environ.get('NAME') if name == None or len(name) == 0: name = "world" message = "Hello, " + name + "!\n" logger.info("api called") return Response(message) if __name__ == '__main__': port = int(os.environ.get("PORT")) logger.info(f"running main application and listening on port {os.environ.get("PORT")}") logger.info(f"value of my port {os.environ.get("MY_PORT")}") with Configurator() as config: logger.info("configuring apis") config.add_route('hello', '/') config.add_view(hello_world, route_name='hello') app = config.make_wsgi_app() server = make_server('0.0.0.0', 8080, app) logger.info("starting server") server.serve_forever()
Dockerfile
FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN yum install python3.7 -y && curl -O https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py && yum update -y COPY . /app WORKDIR /app RUN pip3 install -r requirements.txt CMD python3 server.py EXPOSE 8080
有没有人遇到过类似的App Runner部署Python应用的困境?有没有确实能正常运行的Python示例项目?或者App Runner现在对Python应用的支持是不是存在什么问题?
我真的很需要任何能帮我排查问题的线索,哪怕是怎么才能看到App Runner上的应用日志也好,谢谢大家!
备注:内容来源于stack exchange,提问作者Sathiesh
相关产品推荐
相关产品推荐

