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

时间:2019-11-21 15:15:16

标签: docker aws-api-gateway asp.net-core-2.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代码中,我们还实现了 APIControllerActionFilter OnActionExecuting()。我想知道网关请求ID是否在这里可用?还是将ID从网关传递到实际api的任何方法?

1 个答案:

答案 0 :(得分:1)

在API Gateway控制台中,您可以在Integration Request部分中添加HTTP标头。因此,您可以添加一个自定义标头,并将其映射回requestId。

enable debug logging

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

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

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

使用Beeceptor.com进行的测试

enter image description here