如何通过Amazon Amplify网站域名调用关联的API Gateway代理资源?
解决Amazon Amplify自定义域名访问关联API Gateway资源的问题
看起来你已经把API Gateway的代理配置得很到位了,直接访问端点完全正常,但Amplify默认不会自动帮你把自定义域名的路径映射到关联的API资源,得手动配置重写规则才行,我来一步步帮你解决:
1. 先确认Amplify的资源关联状态
进入你的Amplify应用控制台,切换到「关联的资源」标签页,确认那个名为"service"的API Gateway资源确实已经正确关联,并且部署阶段是staging(和你API的端点一致)。这里要注意,关联资源只是给前端代码注入环境变量,不会自动帮你做路径转发哦。
2. 配置Amplify重写与重定向规则(核心步骤)
这是让自定义域名路径转发到API端点的关键:
- 进入Amplify应用的「重写与重定向」标签页
- 点击「添加规则」,填写以下内容:
- 源地址:
/service/<*> - 目标地址:
https://igvfxr22m9.execute-api.eu-west-2.amazonaws.com/staging/service/<*> - 类型:选择
200 (Rewrite)
- 源地址:
- 如果你想支持
/staging/service的路径,就把源地址改成/staging/service/<*>,目标地址保持和API端点一致即可
这个规则的作用是:把所有以/service/(或/staging/service/)开头的请求,完整转发到你的API Gateway端点,保留后面的路径参数和查询参数,比如/service/test?value=7会被转发到对应的API路径。
3. 调整规则优先级
如果你的应用是单页应用(比如React、Vue),通常会有一个/*的200重写规则,记得把刚才添加的API转发规则拖到这个规则的前面,否则请求会被单页应用的规则拦截,无法转发到API。
4. 等待部署并测试
保存规则后,Amplify会自动部署这些配置,大概需要几分钟时间。部署完成后,再访问https://xxxxxxx.com/service/test?value=7,应该就能得到和直接访问API Gateway一样的响应了。
额外排查点
如果还是不行,可以检查这些地方:
- 确认自定义域名的DNS解析已经生效,Amplify的域名状态是「已部署」
- 查看API Gateway的资源策略,有没有限制访问来源,如果有的话,需要允许Amplify自定义域名的访问
- 去Amplify的「监控」->「访问日志」里查看请求记录,看看请求有没有被正确转发,有没有报错信息
内容的提问来源于stack exchange,提问作者Hellgin
相关产品推荐
相关产品推荐

