如何解决如何基于AWS API Gateway中的请求标头动态设置集成端点?
我想根据请求中收到的请求标头将传入的请求代理到不同的端点。
在AWS API网关中,我可以将不同的端点设置为单独的阶段变量,但是在集成>>端点URL设置中,我想根据请求标头值的值来选择阶段变量。
例如:
如果标头值是brand-id:abc,则请求应代理到abc.test.com
如果标头值是brand-id:pqr,则请求应代理到pqr.test.com
我希望在“端点URL”值中有类似这样的内容: http:// $ {stageVariables。$ {method.request.header.brand-id}} /
任何帮助实现这一目标的方法将不胜感激。
解决方法
AFAIK在API网关级别上是不可能的。选项是在lambda集成级别上进行映射。
,您可以使用Lambda代理集成来实现类似的行为:
- 创建所需的API集。
- 创建一个代理端点,它将所有内容传递给Lambda函数。
- 在Lambda函数内部,根据标头决定调用相应的端点,并从获得的有效负载中传递所需的数据。
- 直接从您调用的API返回响应。
您可以使用python的适配器模式或字符串参数格式来避免if和else条件的混乱。您还可以考虑通过RequestResponse
调用直接从代理Lambda调用Lambda,这可以节省一些时间,这是由API网关的额外层引起的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。