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

如何在AWS Amplify上为React/Redux应用运行Express代理服务

解决方案说明

首先明确核心原因:AWS Amplify前端托管的运行逻辑是只托管静态构建产物,构建阶段的临时容器会在打包完成后销毁,你在postBuild阶段启动的Express代理、PM2进程都不会在生产环境存活,同时package.json里的proxy字段仅作用于React本地开发服务器,生产构建后完全不生效。

你不需要直接改用EC2实例,有三类更低成本的方案可选,优先推荐第一类:

方案1:使用Amplify自带反向代理规则(成本最低,改动最小)

你当前的Express服务仅实现了/contact接口的转发逻辑,完全可以通过Amplify自带的重定向规则实现,不需要额外运行服务:

  • 进入Amplify控制台对应应用的「重写和重定向」配置页
  • 新增一条规则:
    • 源地址:/contact
    • 目标地址:https://my-aws-lambda-base-url/dev/contact
    • 类型选择200(重写),也就是反向代理模式
  • 原有React代码的请求逻辑、Amplify构建脚本都不需要修改,部署后所有发往/contact的请求会被Amplify自动转发到Lambda地址,既隐藏了真实后端URL,也自动处理跨域问题。

方案2:迁移代理逻辑到Amplify函数(适合后续有更多代理需求的场景)

如果后续你需要更多自定义代理逻辑,可以把当前Express的转发逻辑改写为Amplify REST API对应的Lambda函数,挂载到/contact路径下,Amplify会自动托管该函数的运行、扩缩容,不需要你维护服务器。

方案3:EC2部署Express服务(仅推荐有复杂服务端逻辑的场景)

如果一定要保留完整的Express服务,可以将Express单独部署在EC2/ECS上,再配置Amplify的重定向规则把对应接口请求转发到EC2的公网地址。该方案需要你自行负责EC2的运维、监控、安全配置,成本远高于前两个方案,非必要不选择。

避坑提示

  • 永远不要尝试在Amplify的构建脚本中启动常驻进程,构建环境是临时的,所有进程都会在构建完成后被销毁
  • React的proxy配置仅适用于本地开发环境,生产构建后不会生效,不要依赖该配置实现生产代理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:24:03