如何在AWS上构建支持IAM身份认证的VPC网关?
针对该场景的3种可行实现方案
方案1:APIGW v1 + NLB + 内部ALB 三层架构(改造成本最低)
- 保持原有APIGW v1的IAM身份认证能力不变,VPC Link对接私有NLB
- NLB配置TCP 80/443监听,目标组绑定同VPC内的内部ALB作为后端,NLB仅做四层流量透传,不会丢失HTTP头部、路径等上层信息
- 原有ALB的HTTP路径路由、主机头匹配、SSL卸载等能力完全保留,直接对接Fargate服务即可
- 优势:无需修改认证逻辑、无需额外开发,原有ALB配置全部复用;缺点:多一层NLB产生额外成本
方案2:APIGW v2 + Lambda自定义授权器实现IAM认证(成本最优)
- 选用支持ALB对接的HTTP API(APIGW v2),VPC Link直接对接现有ALB,省去NLB组件
- 为APIGW v2配置Lambda授权器,代码逻辑内置AWS SigV4签名校验能力:调用AWS STS的
GetCallerIdentity接口验证请求携带的IAM签名合法性,同时可以自定义权限校验逻辑 - 验证通过后请求直接转发到ALB,原有ALB的所有HTTP特性都可正常使用
- 优势:减少NLB成本,架构更精简;缺点:需要开发、部署Lambda授权器,需额外处理签名校验的边缘case
方案3:ALB直接集成IAM认证(无API网关场景)
- 如果不需要API网关的限流、参数校验等其他能力,可直接使用公有ALB + ALB原生OIDC认证能力对接AWS IAM身份中心/IAM身份池
- 客户端使用IAM身份获取OIDC令牌后携带请求,ALB完成令牌校验后转发到后端Fargate服务
- 优势:架构最精简,无额外网关成本;缺点:仅支持携带OIDC令牌的请求,不兼容原生AWS SigV4签名的IAM请求模式,适配客户端成本更高
内容的提问来源于stack exchange,提问作者barmanthewise
相关产品推荐
相关产品推荐

