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

如何将AWS EC2上的Django+DRF REST API与API Gateway集成?

集成AWS API Gateway到EC2上的Django/DRF API 分步指南

我之前帮朋友搞定过一模一样的配置,踩了几个坑后终于跑通了,下面给你一套能落地的步骤:

1. 前期准备(必做)

首先确保你的EC2环境满足以下条件:

  • 安全组配置:开放对应端口(比如你现在用的8000)给API Gateway访问。如果嫌麻烦可以先临时开放0.0.0.0/0测试,后续再收紧到API Gateway的官方IP段(AWS有公开的IP范围列表,你可以导入到安全组)。
  • 替换生产级WSGI服务器:别再用Django自带的runserver了!高访问量下肯定扛不住,换成Gunicorn+Nginx组合:
    1. 安装Gunicorn:pip install gunicorn
    2. 启动Gunicorn:gunicorn --bind 0.0.0.0:8000 your_project.wsgi:application
    3. 安装Nginx,配置反向代理到8000端口,让Nginx监听80端口(这样后续API Gateway可以访问更标准的80端口)。

2. 创建API Gateway REST API

  1. 登录AWS控制台,进入API Gateway服务。
  2. 点击「创建API」,选择「REST API」→「新建API」,输入API名称(比如MyDRFAPIGateway),端点类型选「区域」(和你的EC2同区域,延迟更低),点击「创建」。

3. 配置资源与方法映射

假设你的DRF API前缀是/myapi,我们来配置对应的资源:

  • 在根路径/下,点击「创建资源」:
    • 资源名称填myapi,路径填/myapi,勾选「启用API Gateway CORS」(解决Android端跨域问题,或者你也可以在Django里用django-cors-headers配置),点击「创建资源」。
  • 为了一次性映射所有/myapi下的子路径(比如/myapi/users、/myapi/posts),我们创建代理资源:
    1. 在/myapi资源下,点击「创建资源」。
    2. 勾选「配置为代理资源」,资源名称填proxy,路径填/{proxy+},点击「创建资源」。
    3. 选择集成类型为「HTTP」,集成端点填http://你的EC2公网IP:8000/myapi/{proxy}(如果用Nginx监听80端口,就改成http://你的EC2公网IP/myapi/{proxy})。
    4. 选择HTTP方法为「ANY」(这样所有GET/POST/PUT/DELETE请求都会被转发),点击「保存」。

4. 调整集成请求细节

这一步是很多人踩坑的核心点:

  • 进入刚才创建的/{proxy+}资源的「集成请求」设置:
    1. 在「HTTP头」部分,添加需要转发到DRF的请求头,比如Authorization、Content-Type,设置值为method.request.header.xxx(比如method.request.header.Authorization)。
    2. 在「映射模板」部分,点击「添加映射模板」,输入application/json,勾选「当没有模板匹配时通过」,模板内容填$input.json('$')(这样API Gateway会把原始JSON请求体完整转发给DRF)。

5. 部署API并测试

  1. 在API Gateway控制台顶部,点击「部署API」:
    • 部署阶段选「新建阶段」,阶段名称填prod(生产环境),点击「部署」。
  2. 你会得到一个Invoke URL,格式是https://xxxxxx.execute-api.你的区域.amazonaws.com/prod。
  3. 测试一下:访问https://xxxxxx.execute-api.你的区域.amazonaws.com/prod/myapi,应该和你直接访问EC2公网IP的结果完全一致。

6. 生产环境优化

  • 缓存配置:针对GET请求启用API Gateway缓存,减少EC2的负载。在阶段设置里找到「缓存」,开启后配置缓存键(比如按查询参数、请求头)。
  • 限流配置:在阶段设置的「节流」里,设置每秒请求数限制,防止恶意流量冲垮你的EC2。
  • 安全组收紧:把EC2的安全组从0.0.0.0/0改成只允许API Gateway的IP段访问,提升安全性。
  • 监控:启用CloudWatch监控API Gateway的请求量、错误率,同时监控EC2的CPU、内存使用情况。

常见问题排查

  • 404错误:检查API Gateway的资源路径和DRF的API路径是否匹配,比如代理资源的{proxy}是否正确映射到DRF的子路径。
  • 502错误:通常是API Gateway无法连接到EC2,检查安全组是否开放端口,EC2的服务是否正常运行。
  • 请求体丢失:确保映射模板里的application/json模板正确设置为$input.json('$')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:26:00