我们可以使用AWS API-Gateway作为API网关来代理Lambda HTTP API后端服务,在正式环境一般我们都希望使用自己的域名而不是AWS默认提供的AWS API-Gateway endpoint。本文介绍怎么将自己的域名和AWS API-Gateway集成并用自己的域名暴露全部的HTTP API。
全部的技术细节可以参考Setting up custom domain names for HTTP APIs
设置API-Gateway使用自定义域名
AWS Certificate Manager 导入自己域名的证书
首先强烈建议大家使用HTTPS,不要使用HTTP,这是为了安全。我们可以先把自己域名的SSL证书导入到AWS Certificate Manager管理起来。详情可以参考AWS ACM导入第三方SSL证书
AWS API-Gateway 添加自定义域名
然后我们开始将自己的域名添加到API-Gateway,点击创建custom domain names
填入自己的域名并选择AWS ACM中保存的SSL证书
添加完成后我们可以看到status是Available
继续点击API Mapping进行域名与API-Gateway映射关系设置
我们可以按自己的需求选择API-Gateway中的API、Stage、Path,并和域名映射
最后我们找到API Gateway domain name,并将自己的域名的DNS CNAME指向它
做完这些我们就可以使用自己的域名访问了
关于本例子中AWS中国的备案问题
可以参考如下的备案连接进行备案:
注意:
- 对于AWS海外的API-Gateway暴露的互联网可访问的API,无需备案即可访问。
- 对于AWS中国(宁夏和北区)而言,需要先备案,
- 备案后过一段时间,当前API-Gateway才会被允许互联网访问,这个时间个人经验是30分钟左右
- 如果备案后等待数小时还是不能访问,建议重新建一个新的API-Gateway替换当前的API-Gateway
AWS中国使用API-Gateway时,在你使用未备案的域名访问API时,会出现{"Message":null}的json response提示,如下题: