SNS HTTP/S投递是否会依据HTTP状态码判定投递结果?
SNS HTTP订阅投递失败状态码规则
AWS SNS对HTTP/HTTPS订阅的投递结果判定有明确规则,仅当接收端返回以下状态码时,才会被判定为投递失败,触发重试逻辑,重试耗尽后流入死信队列:
- 所有5xx系列状态码:例如500、502、503、504等服务端错误,都会被识别为临时故障触发重试
- 仅3个特定4xx状态码:400、408、413,除此之外的所有4xx状态码(包括你测试用的401,以及403、404等)都会被SNS判定为投递成功,不会重试也不会进入DLQ
你遇到的401被判定为成功属于正常逻辑:SNS默认将401、403这类权限类错误归为永久不可恢复的配置问题,认为投递动作已经完成,不再做重复尝试。
如果你要模拟故障触发DLQ写入,直接返回5xx状态码即可,示例测试命令如下:
while true; do echo -e "HTTP/1.1 503 Service Unavailable\nContent-Length: 0\n" | nc -Nl 9078; echo "" && date; done
内容的提问来源于stack exchange,提问作者lopass
相关产品推荐
相关产品推荐

