繁体   English   中英

如何根据 AWS API Gateway 中的请求标头动态设置集成端点?

[英]How to set integration endpoint dynamically based on request header in 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 网关的额外层。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM