You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将AWS CloudFront请求ID转发至源站?

实现CloudFront请求与WAF日志的关联ID方案

方法1:通过CloudFront函数转发请求ID到源站

CloudFront默认不会将自身的requestId(对应WAF日志里的httpRequest.requestId)传递给源站,但可以通过CloudFront函数在请求流向源站时添加自定义请求头,实现ID同步:

创建一个CloudFront函数,配置在**源请求(origin request)**阶段执行:

function handler(event) {
    const request = event.request;
    // 获取CloudFront生成的唯一请求ID
    const cfRequestId = event.requestId;
    // 添加自定义请求头发送给源站
    request.headers['x-cf-request-id'] = { value: cfRequestId };
    return request;
}

部署后,源站就能收到X-CF-Request-ID请求头,其值和WAF日志中的httpRequest.requestId完全一致,直接用这个ID关联两端日志即可。

方法2:用Lambda@Edge实现(兼容复杂场景)

如果需要额外的逻辑处理(比如修改ID格式、添加其他关联信息),可以用Lambda@Edge的源请求触发器:

def lambda_handler(event, context):
    request = event['Records'][0]['cf']['request']
    cf_request_id = event['Records'][0]['cf']['config']['requestId']
    # 添加自定义请求头
    request['headers']['x-cf-request-id'] = [{'key': 'X-CF-Request-ID', 'value': cf_request_id}]
    return request

该方案功能更灵活,但成本和延迟略高于CloudFront函数,适合复杂业务场景。

关键注意点

  • CloudFront的requestId全局唯一,每个请求对应一个,完全满足关联需求。
  • 自定义头建议使用X-前缀,避免与标准HTTP头冲突。
  • WAF日志中的httpRequest.requestId字段就是CloudFront生成的请求ID,无需额外转换。

内容的提问来源于stack exchange,提问作者mayur lagad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 19:15:56