在后端api中获取AWS API网关请求ID

问题描述 投票:0回答:1

我们具有如下所示的api设置

Development : ASP NET Core 2.1 C#
Backend api deployment : In AWS through docker
Gateway : AWS API Gateway which contains custom lambda Authorizer

要求:要在后端api中获取API网关请求ID以进行日志记录和请求跟踪。

当请求通过API网关传递时,它会生成一个请求ID。这是由网关在“ x-amzn-RequestId”中的响应头中设置的,并且可以在客户端中看到(如邮递员)。我可以发现该ID在APIGatewayCustomAuthorizerRequest-。RequestContext.RequestId的对象中的lambda授权器中也可用,我可以将其用于授权者日志记录。

现在,请求获得授权后,将调用实际的api。我希望在此api中使用相同的请求ID进行记录。最终-通过具有相同请求的gateway-aurhorizer-api识别请求的旅程并生成统计信息。

在api代码中,我们还实现了APIControllerActionFilterOnActionExecuting()。我想知道网关请求ID是否在这里可用?还是将ID从网关传递到实际api的任何方法?

docker aws-api-gateway asp.net-core-2.1
1个回答
0
投票
在API Gateway控制台中,您可以在Integration Request部分中添加HTTP标头。因此,您可以添加一个自定义标头,并将其映射回requestId。

enter image description here

或在映射模板中,您可以执行此操作

#set($context.requestOverride.header.requestId = $context.requestId)

然后它将由API网关传递到下游。

来自使用Beeceptor.com的测试

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.