AWS API Gateway+Lambda集成Stripe Webhook时缺失Stripe-Signature header报错
解决Stripe Webhook在AWS API Gateway+Lambda下的400签名头缺失问题
出现Webhook Error: No stripe-signature header value was provided.的核心原因是AWS API Gateway默认不会自动转发所有请求头到Lambda,哪怕是Stripe的关键签名头也需要手动配置映射。按以下步骤解决:
配置API Gateway的请求头映射
- 打开AWS API Gateway控制台,找到关联Lambda的目标API和对应Webhook资源
- 进入该资源的**集成请求(Integration Request)**设置
- 找到HTTP Headers板块,点击「添加头」
- 名称填
stripe-signature,映射值选择method.request.header.stripe-signature - 保存修改后,重新部署API到对应阶段
检查Lambda的请求头获取逻辑
如果用的是API Gateway代理集成,请求头会放在event.headers对象里,确保代码能正确读取:// Node.js示例 exports.handler = async (event) => { const stripeSig = event.headers['stripe-signature']; const rawBody = event.body; // Stripe签名验证逻辑 const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY); try { const webhookEvent = stripe.webhooks.constructEvent( rawBody, stripeSig, process.env.STRIPE_WEBHOOK_SECRET ); // 处理Webhook事件逻辑 return { statusCode: 200, body: JSON.stringify({ received: true }) }; } catch (err) { return { statusCode: 400, body: `Webhook Error: ${err.message}` }; } };若为非代理集成,需确认已将签名头映射到Lambda的事件参数中。
最终配置验证
- 确认Stripe Dashboard里的Webhook端点是API Gateway部署后的公网URL
- 检查Lambda环境变量是否正确配置了Stripe的Webhook签名密钥(注意不是普通API密钥)
内容的提问来源于stack exchange,提问作者reallymemorable
相关产品推荐
相关产品推荐

