内容提要
本文介绍了一种基于Amazon CloudFront和Lambda@Edge的架构方案,用于记录被WAF拦截及源站返回错误的请求。该方案无需修改源站代码,能够记录失败请求的headers和body,并通过CloudWatch Logs和Kinesis Data Firehose汇聚至S3,支持异步重放。其核心价值在于信息完整性、零侵入性和成本可控,适用于无法修改代码的非AWS环境。
关键要点
-
本文介绍了一种基于 Amazon CloudFront 和 Lambda@Edge 的架构方案,用于记录被 WAF 拦截及源站返回错误的请求。
-
该方案无需修改源站代码,能够记录失败请求的 headers 和 body。
-
通过 CloudWatch Logs 和 Kinesis Data Firehose 汇聚至 S3,支持异步重放。
-
方案的核心价值在于信息完整性、零侵入性和成本可控,适用于无法修改代码的非 AWS 环境。
-
失败请求包括被 AWS WAF 拦截的请求和源站响应 4xx/5xx 的请求。
-
方案采用双 Lambda@Edge 函数架构,分别在 origin-request 和 origin-response 阶段进行处理。
-
每个请求触发两个 Lambda@Edge 函数,月均约 6,000 万次执行,估算月度成本约为 $60.60。
-
该方案的实施步骤包括创建 Lambda@Edge 函数、配置 Amazon CloudFront Distribution 和日志汇聚管道。
-
方案支持记录完整的请求信息,便于后续的数据补偿和请求重放。
延伸问答
如何在不修改源站代码的情况下记录失败请求?
可以通过基于 Amazon CloudFront 和 Lambda@Edge 的架构方案,记录被 WAF 拦截及源站返回错误的请求,完全在 CloudFront 层实现。
该方案的核心价值是什么?
方案的核心价值在于信息完整性、零侵入性和成本可控,适用于无法修改代码的非 AWS 环境。
如何实现日志的统一存储?
通过配置 Amazon Kinesis Data Firehose,将从 Amazon CloudWatch Logs 收集的日志统一投递到 Amazon S3 存储桶。
该方案的实施步骤有哪些?
实施步骤包括创建 Lambda@Edge 函数、配置 Amazon CloudFront Distribution 和日志汇聚管道。
该方案的月度成本大约是多少?
在日均百万请求的场景下,方案的月度成本约为 $60.60。
如何处理被 AWS WAF 拦截的请求?
被 AWS WAF 拦截的请求会通过 AWS WAF 的独立日志记录机制写入 Amazon CloudWatch Logs,包含 headers 和 body 前 8KB。