无法在 AWS App Runner 中运行简单的 Python 应用程序

问题描述 投票:0回答:1

最近有人在 AWS 应用程序运行器上部署过 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 示例,如下所示 https://github.com/Sathyvs/apprunner https://github.com/adamjkeller/simple-apprunner-demo(这是作者放在 YouTube 视频上的代码,显示一切正常工作,但是当我分叉这个存储库并运行它时,我得到了相同的结果以上问题。

我已经尝试过了

  • 使用源代码作为输入以及来自 ECR 的构建图像
  • 在 aws 控制台上使用构建设置,并使用配置文件 (apprunner.yaml)
  • 将运行状况检查配置更改为各种超时、tcp、http 和根目录下的 http,在不同的路由(如 /health)
  • 我从 8000 开始使用快速 api,并尝试了具有所有不同端口(如 8080、80、8000 等)的不同服务器。
  • 我尝试过python3运行时,python 3.11

但每次尝试都在同一步骤失败。如果您在这里看到此文件https://github.com/Sathyvs/apprunner/blob/main/server.py 我添加了一些日志,虽然我在本地计算机中看到启动日志,但我在应用程序运行器上看不到任何应用程序日志,它只提供相同的有限日志,并且没有关于正在发生的情况的附加信息部署?

代码位于 https://github.com/Sathyvs/apprunner/tree/main 服务器.py

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
import os, logging

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 中部署了应用程序? 有没有实际在 app runner 上运行 python 应用程序的示例?应用程序运行器真的可以工作吗?

我感谢任何帮助或线索,甚至可以找到更多有关正在发生的事情的日志。谢谢。

python amazon-web-services aws-app-runner docker-healthcheck
1个回答
0
投票

感谢您的评论并尝试复制该问题。由于我的所有尝试都失败了,我联系了 AWS 支持,他们提到,他们刷新了我的帐户,之后我就可以毫无问题地部署示例或启动指南示例。这是他们的评论

我想通知您,根据您的账户使用情况,您的 AWS 账户与 Apprunner 服务相关的配额受到限制,因为 Apprunner 实例未在 Apprunner 服务中启动,从而导致应用程序未启动(因此不生成应用程序日志),因此,运行状况检查失败。此外,您的帐户活动在每个区域内都会受到持续监控,并且这些配额会根据您的使用情况自动增加。

© www.soinside.com 2019 - 2024. All rights reserved.