4

我想根据请求中收到的请求标头将传入请求代理到不同的端点。

在 AWS API 网关中,我可以将不同的端点设置为单独的阶段变量,但在集成 >> 端点 URL 设置中,我想根据请求标头值的值选择阶段变量。

例如:

如果标头值为 brand-id: abc 那么请求应该被代理到 abc.test.com

如果标头值为 brand-id: pqr 那么请求应该被代理到 pqr.test.com

我在“端点 URL”值中期待这样的东西: http://${stageVariables.${method.request.header.brand-id}}/

任何帮助实现这一点将不胜感激。

4

2 回答 2

0

AFAIK this is not possible on the API Gateway level. Option is to do the mapping on the lambda integration level.

于 2020-10-05T08:54:02.080 回答
0

您可以使用 Lambda 代理集成来实现类似的行为:

  • 创建所需的 API 集。
  • 创建一个代理端点,它将所有内容传递给 Lambda 函数。
  • 在 Lambda 函数内部,根据标头决定调用相应的端点并从您获得的有效负载中传递所需的数据。
  • 从您调用的 API 返回响应。

您可以使用 python 的适配器模式或字符串参数格式化来避免 if 和 else 条件的混乱。您也可以考虑直接从您的代理 LambdaRequestResponse调用 Lambdas,这可能会为您节省一些由 API Gateway 额外层引起的时间。

于 2020-10-05T11:51:38.227 回答