如何让无VPC的Lambda部署在VPC可访问的私用APIGateway后端?
解决方案
核心方案:使用API Gateway私有端点+VPC端点(VPCE)
这是完全匹配你需求的方案,既遵循Lambda不部署在VPC内的最佳实践,又实现VPC内服务器安全访问API且不暴露公网:
- 创建私有类型的API Gateway:在控制台创建API时选择「私有」类型,此时API不会生成公网端点,仅允许通过VPC端点访问。
- 配置VPC端点(VPCE):在VPC控制台创建针对API Gateway的VPC端点(服务类型为
com.amazonaws.<你的区域>.execute-api),关联目标VPC的子网和安全组,确保VPC内服务器所在安全组允许访问该VPCE的443端口。 - 配置API Gateway资源策略:添加策略限制仅指定VPC的流量能调用API,防止未授权访问。核心策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:<区域>:<账号ID>:<API ID>/*", "Condition": { "StringEquals": { "aws:SourceVpc": "<你的VPC ID>" } } } ] } - 关联Lambda到API Gateway:将部署在VPC外的Lambda设为API的集成目标,确保Lambda的IAM角色授予API Gateway调用权限(可通过控制台「集成请求」自动配置,或手动添加
lambda:InvokeFunction权限)。
验证要点
- VPC内服务器可通过私有API的域名(格式:
<API ID>.execute-api.<区域>.amazonaws.com)访问,流量全程在AWS内部网络传输,无需NAT网关或公网出口。 - 保持Lambda在VPC外运行,完全符合Serverless Lens的最佳实践,避免VPC部署带来的冷启动延迟和额外网络配置成本。
内容的提问来源于stack exchange,提问作者Ramón J Romero y Vigil
相关产品推荐
相关产品推荐

