我们的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的任何方法?
答案 0 :(得分:1)
在API Gateway控制台中,您可以在Integration Request部分中添加HTTP标头。因此,您可以添加一个自定义标头,并将其映射回requestId。
或在映射模板中,您可以执行此操作
#set($context.requestOverride.header.requestId = $context.requestId)
然后它将由API网关传递到下游。
使用Beeceptor.com进行的测试