You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于AWS Lambda镜像打包的FastAPI Docker容器本地运行返回404错误

问题原因

你使用的amazon/aws-lambda-python基础镜像是AWS官方为Lambda量身打造的运行时镜像,默认启动的是Lambda的运行时代理服务,不是直接暴露FastAPI的HTTP服务端口。你直接GET访问localhost:9000当然会返回404,因为这个路径根本不是Lambda运行时代理的可访问路径。

解决方案

分为两种测试场景选择对应方案即可:

场景1:按照Lambda官方规范做本地测试

Lambda运行时镜像本地测试需要用POST请求调用指定的触发路径,参数模拟Lambda的触发事件:

  1. 保持你当前的Dockerfile、代码配置不变,正常启动容器:docker run -p 9000:8080 try98
  2. 新开一个终端,用curl或者Postman发送POST请求到指定路径,模拟API网关触发事件:
curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"requestContext": {"http": {"method": "GET", "path": "/"}}, "rawPath": "/"}'
  1. 执行后就会正常返回你写的{"message": "Hello World"}结果。

场景2:想要直接像普通FastAPI一样本地访问测试

如果不想每次都用POST请求调用,希望直接在浏览器访问localhost:9000看结果,可以临时修改Dockerfile的启动命令,直接启动uvicorn服务:

FROM amazon/aws-lambda-python:3.8
COPY . ${LAMBDA_TASK_ROOT}
RUN pip install -r requirements.txt
# 本地测试时用这个启动命令,部署到Lambda时再改回["main.handler"]即可
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]

重新构建运行后,直接访问localhost:9000就能正常看到返回结果。

内容的提问来源于stack exchange,提问作者Faisal Shani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:06:04