SuperAPI AI 工具集

vercel-log-drains-webhooks

部署与运维

查看项目

更新于 10-16 05:52

技能介绍

用途:接收并验证 Vercel Log Drains 的 HTTP 日志投递。Vercel Log Drains 会把部署日志批量转发到你配置的任意 HTTPS 端点,属于 HTTP 日志投递,而非 Standard Webhooks。Vercel 用 drain 的签名密钥对原始请求体做 HMAC-SHA1 签名,并把十六进制摘要放在 x-vercel-signature 头中(无 sha1= 前缀)。

主要能力:校验签名(必须使用原始请求体,不要重新序列化,并使用时序安全比较);处理 x-vercel-verify 端点握手;解析批量日志(JSON 数组或 NDJSON,可 gzip 压缩);按来源 source 分发处理,来源包括 static、lambda、edge、build、external、firewall、redirect,每条记录还有 level(info、warning、error、fatal),statusCode 为 -1 表示 lambda 崩溃无响应。

使用方式:Node 中可用 crypto.createHmac('sha1', secret).update(rawBody).digest('hex') 计算摘要并用 crypto.timingSafeEqual 比较,长度或格式错误时返回 false;Python 用 hmac.new(secret.encode(), raw_body, hashlib.sha1).hexdigest() 配合 hmac.compare_digest。握手时 Vercel 发送未签名探测请求,端点需返回 200 并以 x-vercel-verify 响应头回显令牌;无 x-vercel-signature 视为握手,不处理日志,签名无效则返回 403。环境变量为 VERCEL_LOG_DRAIN_SECRET 和 VERCEL_VERIFY。本地开发可用 npx hookdeck-cli listen 3000 vercel-log-drains --path /webhooks/vercel-log-drains 启动隧道。

适用场景:搭建 Vercel 日志接收端点、调试签名验证失败、解析批量日志、按来源处理日志。限制:消息超过 256 KB 时字段可能被截断;编码格式按 drain 设置;握手探测未签名。更完整的处理器示例与测试见 examples/express/、examples/nextjs/、examples/fastapi/,细节见 references/overview.md、setup.md、verification.md。费用、价格与平台支持范围暂未提供。