AWS SNS HTTPS订阅自动删除问题分析与解决方案
1. AWS SNS HTTPS订阅自动删除问题概述最近在项目中遇到一个棘手的问题配置在AWS SNSSimple Notification Service中的HTTPS订阅会莫名其妙地被自动删除。这个问题直接导致我们的消息通知系统出现严重漏洞——部分终端用户收不到关键的业务通知。经过一周的深入排查终于找到了根本原因和解决方案。HTTPS订阅是SNS中常用的一种消息推送方式它允许SNS将消息通过HTTPS协议推送到我们指定的Webhook地址。相比SQS队列订阅HTTPS订阅更适合需要实时推送且接收端为Web服务的场景。但在实际使用中HTTPS订阅的稳定性问题经常让开发者头疼。2. 问题现象与初步排查2.1 异常现象描述我们的系统架构中SNS负责将订单状态变更通知推送到多个微服务。突然有一天运维团队发现部分服务的订阅关系消失了。具体表现为在AWS控制台的SNS订阅列表中部分HTTPS订阅状态显示为DeletedCloudWatch日志中出现Subscription deleted的记录但没有人工操作记录问题呈现间歇性出现约每周发生1-2次被删除的订阅都是HTTPS类型SQS和Lambda订阅不受影响2.2 初步排查步骤首先我们按照AWS的标准排查流程进行了检查检查IAM权限确认没有自动化脚本或第三方服务拥有sns:Unsubscribe权限查看CloudTrail日志过滤sns:Unsubscribe API调用确实没有找到相关记录检查订阅终端点Endpoint所有HTTPS端点均运行正常返回2xx状态码检查重试策略SNS默认重试3次我们的端点响应时间在300ms以内不太可能触发重试失败3. 深入分析与根本原因定位3.1 SNS订阅健康检查机制通过查阅AWS文档和联系技术支持我们了解到SNS有一个不为人知的重要机制自动订阅健康检查。这个机制的工作原理是SNS会定期约每天一次向HTTPS订阅端点发送确认请求端点需要在规定时间内返回200 OK响应如果连续多次通常是3次检查失败SNS会自动标记并删除该订阅3.2 实际问题根源通过进一步分析我们发现问题的根本原因有两个端点响应格式不符要求SNS的健康检查请求是特殊的确认请求非普通消息我们的端点没有区分普通消息和确认请求对所有请求都返回相同的业务响应虽然返回200状态码但响应体不符合SNS期望的格式网络中间件干扰公司最近部署了新的API网关某些健康检查请求被网关拦截并修改了头部信息导致SNS无法正确验证响应4. 解决方案与实施步骤4.1 修复端点逻辑我们修改了Webhook端点的处理逻辑app.route(/sns-webhook, methods[POST]) def handle_sns(): # 检查是否为订阅确认请求 if request.headers.get(x-amz-sns-message-type) SubscriptionConfirmation: # 获取订阅确认URL subscribe_url request.json.get(SubscribeURL) # 访问确认URL完成订阅 requests.get(subscribe_url) # 返回空200响应 return , 200 # 正常消息处理逻辑 process_message(request.json) return , 200关键改进点明确区分订阅确认请求和普通消息对确认请求按照SNS要求进行处理保持响应简洁避免多余内容4.2 网络架构调整针对网络中间件问题我们做了以下调整将SNS的源IP范围AWS官方公布加入API网关白名单配置网关规则不对SNS相关请求进行修改为SNS健康检查请求设置专用路由4.3 监控与告警增强为防止问题再次发生我们增加了以下监控措施CloudWatch警报监控SNS订阅数量的异常变化设置订阅删除事件的告警自定义健康检查每5分钟检查所有订阅状态发现异常自动触发修复流程5. 验证与效果评估5.1 测试方案我们通过以下方式验证修复效果手动触发SNS订阅确认请求aws sns confirm-subscription \ --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic \ --token 2336412f37...使用SNS测试通知功能发送测试消息aws sns publish \ --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic \ --message 测试消息模拟网络故障观察系统行为5.2 实施效果修复后经过一个月观察订阅自动删除问题完全消失消息投递成功率从92%提升到99.99%系统稳定性显著提高6. 经验总结与最佳实践6.1 关键教训不要忽视SNS的健康检查机制这是AWS文档中不太强调但非常重要的功能必须正确处理SubscriptionConfirmation和UnsubscribeConfirmation请求网络中间件的影响网关、代理等中间件可能修改请求/响应需要为SNS通信设置专用规则监控订阅状态SNS订阅变化应该纳入核心监控指标建议设置订阅数量变化的告警阈值6.2 推荐实践基于这次经验我们总结出以下最佳实践端点实现规范必须支持三种SNS请求类型SubscriptionConfirmationNotificationUnsubscribeConfirmation每种类型需要不同的处理逻辑错误处理建议对SNS请求实现完善的日志记录对失败请求实施指数退避重试设置死信队列收集无法处理的消息架构设计考虑对于关键业务建议使用SQS轮询作为备用方案考虑在客户端实现消息本地缓存重要通知应该实现多通道冗余投递7. 高级配置与优化建议7.1 重试策略配置虽然SNS有默认的重试机制但我们可以通过订阅属性进行优化aws sns set-subscription-attributes \ --subscription-arn arn:aws:sns:us-west-2:123456789012:my-topic:... \ --attribute-name DeliveryPolicy \ --attribute-value { healthyRetryPolicy: { minDelayTarget: 20, maxDelayTarget: 60, numRetries: 5, numNoDelayRetries: 1, backoffFunction: linear }, throttlePolicy: { maxReceivesPerSecond: 10 } }7.2 死信队列设置为处理无法投递的消息建议配置死信队列首先创建专用SQS队列aws sqs create-queue --queue-name sns-dlq然后将其配置为SNS订阅的死信队列aws sns set-subscription-attributes \ --subscription-arn arn:aws:sns:us-west-2:123456789012:my-topic:... \ --attribute-name RedrivePolicy \ --attribute-value { deadLetterTargetArn: arn:aws:sqs:us-west-2:123456789012:sns-dlq }7.3 消息过滤优化对于大型系统可以使用SNS的消息过滤功能减少不必要的推送aws sns subscribe \ --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic \ --protocol https \ --notification-endpoint https://example.com/endpoint \ --attributes { FilterPolicy: {\eventType\:[\orderUpdate\]} }8. 常见问题解决方案速查表问题现象可能原因解决方案订阅被自动删除健康检查失败检查端点是否正确处理SubscriptionConfirmation请求收不到消息但订阅存在端点响应超时优化端点性能确保500ms内响应重复收到相同消息端点返回非2xx状态码确保正确处理消息后返回200控制台显示订阅PendingConfirmation未完成订阅确认手动访问SubscribeURL或重新订阅部分消息丢失订阅属性配置不当检查DeliveryPolicy和RedrivePolicy设置

相关新闻

基于BiLSTM+Attention的蓝牙耳机评论情感分析系统

基于BiLSTM+Attention的蓝牙耳机评论情感分析系统

1. 项目背景与核心价值 蓝牙耳机作为近年来消费电子领域的爆款产品,线上销售占比已超过70%。各大电商平台每天产生数以万计的购买评论,这些UGC内容蕴含着消费者对产品功能、音质表现、佩戴舒适度等维度的真实反馈。传统的人工抽检方式不仅效率低下&#…

2026/8/1 9:34:31 阅读更多 →
操作系统期末高效复习:如何自主整理选择、填空、判断题库

操作系统期末高效复习:如何自主整理选择、填空、判断题库

1. 项目概述:为什么期末复习需要自己整理题目? 又到了期末季,操作系统这门课是不是让你感觉头大?进程、线程、死锁、内存管理、文件系统……概念又多又抽象,教材和PPT看了一遍又一遍,合上书还是感觉一片空白…

2026/8/1 9:34:31 阅读更多 →
STM32 GPIO八种工作模式深度解析:从电路原理到实战配置

STM32 GPIO八种工作模式深度解析:从电路原理到实战配置

1. 项目概述:为什么GPIO模式是嵌入式开发的基石 刚接触STM32这类微控制器时,很多人都是从点灯开始的。你照着教程,在CubeMX里配置一个引脚为输出模式,写一句 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET) ,L…

2026/8/1 9:34:31 阅读更多 →

最新新闻

计算机毕业设计之成都奥科厨具厂产品在线销售系统设计与实现

计算机毕业设计之成都奥科厨具厂产品在线销售系统设计与实现

时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,成都奥科厨具厂产品在线销售系统当然不能排除在外。成都奥科厨具厂产品在线销售系统是在实际应用和软件工程的开发原理之上,运用java…

2026/8/1 17:02:32 阅读更多 →
【Linux安装人大金仓V9教程】超详细图文讲解(附安装包)

【Linux安装人大金仓V9教程】超详细图文讲解(附安装包)

前言 在国产化替代的浪潮中,数据库作为IT基础设施的“心脏”,其自主可控程度直接决定了信息系统的安全边界。人大金仓KingbaseES凭借二十余年的技术沉淀,已成为国内政务云、能源调度、金融交易等核心场景中部署最广泛的国产关系型数据库之一…

2026/8/1 17:02:32 阅读更多 →
2026年万方AIGC检测超标?3个免费工具亲测把AI率从65%压到10%以下

2026年万方AIGC检测超标?3个免费工具亲测把AI率从65%压到10%以下

2026年万方AIGC检测超标?3个免费工具亲测把AI率从65%压到10%以下 万方数据库已全面升级AIGC检测模块,2026年毕业季投稿被打回的主要原因之一就是AI率超标。本文亲测3款工具,核心结论先说:嘎嘎降AI(aigcleaner.com&…

2026/8/1 17:02:32 阅读更多 →
Unity平滑移动:Vector3.SmoothDamp原理、应用与调优全解析

Unity平滑移动:Vector3.SmoothDamp原理、应用与调优全解析

1. 项目概述:为什么需要“平滑移动”?在Unity开发中,尤其是涉及角色控制、相机跟随、UI动画或者任何需要物体从A点移动到B点的场景里,一个最常见也最容易被忽视的细节就是移动的“手感”。新手开发者最容易犯的错误就是直接使用tr…

2026/8/1 17:02:32 阅读更多 →
NGINX Prometheus Exporter:实现企业级Web服务器监控的完整解决方案

NGINX Prometheus Exporter:实现企业级Web服务器监控的完整解决方案

NGINX Prometheus Exporter:实现企业级Web服务器监控的完整解决方案 【免费下载链接】nginx-prometheus-exporter NGINX Prometheus Exporter for NGINX and NGINX Plus 项目地址: https://gitcode.com/gh_mirrors/ng/nginx-prometheus-exporter NGINX Prome…

2026/8/1 17:02:31 阅读更多 →
AI日程冲突检测失效的7个隐性原因:从语义歧义到时区黑洞,一线工程师血泪复盘

AI日程冲突检测失效的7个隐性原因:从语义歧义到时区黑洞,一线工程师血泪复盘

更多请点击: https://codechina.net 第一章:AI日程冲突检测失效的7个隐性原因:从语义歧义到时区黑洞,一线工程师血泪复盘 AI日程助手在高并发会议调度场景下频繁漏报“张三14:00-15:00与李四14:00-15:00冲突”,而人工…

2026/8/1 17:01:31 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/8/1 13:02:46 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →