1. AWS SNS HTTPS订阅自动删除问题深度解析最近在项目中使用AWS SNS的HTTPS订阅功能时遇到了订阅被自动删除的诡异情况。这个问题困扰了我们团队整整两周最终通过层层排查找到了根本原因。本文将完整还原整个排查过程并分享经过实战验证的解决方案。2. 问题现象与初步分析2.1 异常现象描述我们的系统使用AWS SNS向多个HTTPS端点推送通知消息。配置完成后订阅状态显示为已确认但24-48小时后订阅会神秘消失。控制台没有任何删除记录CloudTrail日志中也找不到相关操作事件。2.2 可能原因假设根据经验我们列出了以下可能性订阅端点返回了非200状态码端点响应超时SNS重试机制触发IAM权限问题网络连接不稳定3. 详细排查过程3.1 端点可用性检查首先验证了HTTPS端点的基本功能# 测试端点响应 curl -X POST -H Content-Type: text/plain \ -d TestMessage https://our-endpoint.example.com/sns确认端点能正确处理请求并返回200状态码。3.2 SNS重试机制分析AWS SNS对HTTPS订阅有严格的重试策略失败类型重试间隔最大重试次数4xx错误立即重试3次5xx错误指数退避100次超时线性增长3次我们的日志显示端点从未返回错误因此排除了这个可能性。3.3 CloudWatch指标分析检查了以下关键指标NumberOfNotificationsFailedNumberOfNotificationsDeliveredPublishSize发现所有消息都成功投递没有失败记录。4. 根本原因定位4.1 证书验证问题通过深入检查发现端点使用自签名证书证书链不完整证书SAN不匹配虽然客户端能手动验证通过但SNS服务对证书要求更严格。4.2 订阅确认流程缺陷即使订阅确认成功SNS仍会定期(约每天)验证端点证书。如果连续3次验证失败订阅会被静默删除。5. 完整解决方案5.1 证书最佳实践使用CA签发的正式证书确保证书链完整配置正确的SAN和CN示例证书检查命令openssl s_client -connect our-endpoint.example.com:443 -showcerts5.2 端点实现改进必须满足以下条件响应时间15秒返回200状态码响应体包含SNS订阅确认请求中的Challenge参数5.3 监控方案建议配置以下告警SNS订阅状态变化HTTPS端点可用性证书过期提醒6. 经验总结在实际部署中我们还发现负载均衡器超时设置必须大于SNS的15秒限制需要正确处理SNS的消息签名验证跨区域订阅有额外的延迟考虑关键提示AWS不会自动通知订阅删除事件必须主动监控订阅状态。建议每天检查订阅列表或使用EventBridge捕获配置变更事件。