如何配置AWS API Gateway日志以记录转换后的代理请求URL?
配置API Gateway日志记录转换后的目标URL
解决方法
API Gateway自带的$context.integration.request.url上下文变量,正好能记录转换后发给外部API的完整URL(包含所有查询参数),直接把这个变量加到你的自定义日志格式里就行。
操作步骤
- 打开API Gateway控制台,找到你的代理REST API
- 进入「阶段(Stages)」页面,选择当前部署的阶段
- 切换到「日志/追踪(Logs/Tracing)」标签页
- 在「自定义访问日志格式」框里,把原格式修改,新增
targetUrl: $context.integration.request.url字段
修改后的完整日志格式
requestId: $context.requestId, ip: $context.identity.sourceIp, caller: $context.identity.caller, user: $context.identity.user, contextPath: $context.path, contextOverRidePath: $context.requestOverride.path.path_name, requestTime: $context.requestTime, httpMethod: $context.httpMethod, resourcePath: $context.resourcePath, status: $context.status, protocol: $context.protocol, responseLength: $context.responseLength, targetUrl: $context.integration.request.url
补充说明
- 这个变量会自动带上你配置的查询参数映射结果,比如你例子里的
arg1=123&arg2=345都会被包含进去,最终日志里的targetUrl就是你需要验证的https://some.api.com/reports/?arg1=123&arg2=345格式 - 如果用CloudFormation管理API阶段,直接在
AWS::ApiGateway::Stage资源的AccessLogSetting属性中,把Format字段替换成上面的格式字符串就行
内容的提问来源于stack exchange,提问作者Gatmando
相关产品推荐
相关产品推荐

