如何解决AWS execute-api VPC终端节点阻塞其他账户API网关问题?
解决VPC内Lambda无法访问其他账户API网关的方案
方案1:关闭私有DNS,用自定义Route 53记录区分解析
- 关掉execute-api VPC终端节点的私有DNS功能
- 在VPC的Route 53私有托管区里建两条解析记录:
- 本账户的API网关子域名,建
A或CNAME记录指向VPC终端节点的内网IP/域名,保证内网访问 - 其他账户的API网关子域名,建
CNAME记录指向它的公网域名,或者直接让它走默认公网解析
- 本账户的API网关子域名,建
- 这样既能保留本账户API的内网访问,又能正常连其他账户的API
方案2:用Route 53条件转发规则指定解析路径
- 保留execute-api VPC终端节点的私有DNS
- 在Route 53里创建条件转发规则,把其他账户API网关的特定子域名(比如
xxx.execute-api.us-east-1.amazonaws.com)转发到公共DNS(比如8.8.8.8) - 本账户的API子域名继续走私有DNS解析到内网,其他指定的子域名则用公共解析拿到公网IP
方案3:Lambda代码里直接用目标API的公网IP+Host头
- 先用
nslookup或dig查好其他账户API网关的公网IP - 在Lambda代码里直接用这个IP发请求,同时手动设置
Host请求头为目标API的域名 - 注意:如果目标API的IP变了,得手动更新Lambda里的配置,适合IP比较稳定的场景
方案4:通过VPC对等连接/中转网关打通两个账户VPC
- 如果两个账户的VPC能建对等连接,或者用AWS Transit Gateway连通,把其他账户的API网关配置成允许来自本VPC的访问
- 之后可以把其他账户的API域名通过私有DNS解析到它所在VPC的内网资源,实现内网访问,还不用走公网
内容的提问来源于stack exchange,提问作者anttik
相关产品推荐
相关产品推荐

