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

托管于S3存储桶的静态网站调用AWS Lambda的VPC通信方式咨询

AWS VPC环境下S3静态站点访问EC2后端服务的实现方案

首先明确前提:Lambda是AWS托管的无服务器计算服务,无需部署在EC2实例上,推测你的场景为:S3托管的静态前端站点,需要调用部署在VPC内EC2实例上的后端服务,由后端服务调用Lambda执行CRUD操作,本地调试时后端服务监听在localhost:8080端口,具体实现步骤如下:

1. 基础网络配置

  • 确认EC2实例所在安全组的入站规则,开放后端服务监听的8080端口,测试阶段可授权你的本地公网IP为来源,生产环境建议仅授权AWS内部服务网段或负载均衡的安全组。
  • 若采用公网访问方案,确认EC2所在子网关联的路由表已绑定Internet网关,具备公网访问能力。

2. 公网暴露后端接口(主流方案)

S3静态站点的请求是从用户本地浏览器发起,无法直接访问VPC内网IP,推荐两种成熟对接方式:

方案A:应用负载均衡(ALB)对接

  • 在EC2所在VPC下创建公网ALB,分配公网IP,监听80/443端口,绑定ACM颁发的SSL证书开启HTTPS访问。
  • 配置ALB目标组,目标类型选择EC2实例,将部署后端服务的EC2加入目标组,健康检查端口配置为8080。
  • 将前端代码中的接口请求地址从localhost:8080/parcelUpdate替换为ALB的公网域名+路径,例:https://alb-xxx.us-east-1.elb.amazonaws.com/parcelUpdate。

方案B:API Gateway对接

  • 创建HTTP/REST API,为/parcelUpdate等CRUD路径配置VPC集成,对接目标为上述ALB或者直接关联EC2实例的私有地址。
  • 部署API Gateway后获取公网调用域名,替换前端代码中的接口地址即可。
  • 该方案额外支持请求限流、身份校验、日志审计等能力,适合有管控需求的生产环境。

3. 跨域配置

由于S3站点域名和后端接口域名不一致,需要在EC2的后端服务中配置CORS规则,允许S3站点域名作为请求源,避免浏览器跨域拦截。

Node.js Express服务配置示例:

const cors = require('cors');
app.use(cors({
  origin: 'https://<你的S3静态站点域名>',
  methods: ['GET', 'POST', 'PUT', 'DELETE'],
  allowedHeaders: ['Content-Type']
}));

4. 私有访问方案(非必要不选用)

如果你不希望后端接口暴露在公网,可配置用户端通过VPN或AWS Direct Connect接入VPC,直接通过EC2的私有IP+8080端口发起请求,无需配置公网负载均衡。

补充优化建议

如果你的后端服务仅用于转发请求调用Lambda,可移除EC2层,直接通过API Gateway集成Lambda执行CRUD操作,无需自行维护服务器,降低运维成本和故障率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:36:02