【发布时间】:2020-06-24 11:30:43
【问题描述】:
我创建了一个 API 网关来运行 Lambda 函数。这意味着用作内部服务,因此我的 API 网关是私有的。为了使 API 网关可以私下访问,我执行了以下操作:
- 在我们 VPC 的几个子网中创建了一个 VPC 终端节点
- 将端点添加到仅允许来自本地的流量的安全组
- 向 API 网关添加了仅允许来自 VPC 端点的请求的资源策略
这些步骤有效地阻止公共请求,并允许来自本地的请求通过 VPC 终端节点创建的 DNS 名称。
这种方法的问题是为了调用 API,必须在请求中指定 Host 或 x-apigw-api-id。目标是让用户能够在浏览器上输入 URL 和查询字符串参数,并从服务中获得响应。
Amazon API Gateway types, use cases and performance 谈到了一种避免指定 API id 或主机的方法,但它没有提供太多细节。相关部分说解决方案是:
在您的 PrivateLink 网络接口的 IP 地址前面放置一个带有 SSL 证书(例如 api.mydomain.com)的 Application Load Balancer。还要为 api.mydomain.com 部署一个自定义域名,并为您的 API 网关部署一个基本路径映射。然后添加将 api.mydomain.com 作为别名指向 ALB 的 Route 53 记录。这个解决方案非常复杂,但我们已经对其进行了测试,并且可以正常工作。描述完整的解决方案超出了本文的范围,但我们稍后可能会写一篇单独的博客文章。
有谁知道如何做到这一点或其他方法?
【问题讨论】:
标签: amazon-web-services aws-api-gateway amazon-vpc