【问题标题】:Getting AWS API Gateway Request Id in backend api在后端 api 中获取 AWS API Gateway 请求 ID
【发布时间】:2020-03-17 13:49:02
【问题描述】:

我们有如下的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 Gateway 请求 id 用于日志记录和请求跟踪。

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

现在请求被授权,实际的 api 被调用。我想在这个 api 中使用相同的请求 id 来记录日志。最终 - 通过具有相同请求的 gateway-aurhorizer-api 识别请求的旅程并生成统计信息。

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

【问题讨论】:

    标签: docker aws-api-gateway asp.net-core-2.1


    【解决方案1】:

    在 API Gateway 控制台中,您可以在集成请求部分添加 HTTP 标头。因此,您可以添加自定义标头并将其映射回 requestId。

    或者在映射模板中你可以这样做

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

    这将由 API 网关向下游传递。

    来自使用 Beeceptor.com 的测试

    【讨论】:

    猜你喜欢
    • 2022-10-14
    • 2020-11-18
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    相关资源
    最近更新 更多