
Quarkus 应用调用 AWS SNS 发布消息时出现 “Topic does not exist”(404)错误,通常并非因 Topic 不存在或凭证错误,而是由 Quarkus AWS 扩展版本不兼容或底层 SDK 行为变更导致;升级 quarkus-amazon-services-sns 依赖即可解决。
quarkus 应用调用 aws sns 发布消息时出现 “topic does not exist”(404)错误,通常并非因 topic 不存在或凭证错误,而是由 quarkus aws 扩展版本不兼容或底层 sdk 行为变更导致;升级 `quarkus-amazon-services-sns` 依赖即可解决。
在使用 Quarkus 集成 AWS SNS 时,即使通过 AWS CLI 确认 Topic 存在(如 aws sns list-topics 成功返回 ARN),且 application.properties 中正确配置了区域与 Topic ARN,仍可能遇到 Topic does not exist (Status Code: 404) 异常。该问题极少源于网络、权限或 Topic 本身,而更常指向客户端 SDK 的行为差异或扩展缺陷。
根本原因在于:早期版本的 quarkus-amazon-services-sns(如 2.13.x 或更早)所封装的 software.amazon.awssdk:sns 客户端,在构造请求时可能未严格匹配目标 Region,或存在默认 endpoint 解析逻辑缺陷——尤其当显式配置的 quarkus.sns.aws.region 与 Topic ARN 中的 region 不一致(哪怕实际一致)时,部分旧版本会忽略配置、回退到默认区域(如 us-east-1),从而向错误 endpoint 发起请求,最终返回 404。
✅ 解决方案:升级 Quarkus SNS 扩展版本
确保使用 Quarkus 2.16.0+(推荐 3.x LTS) 及对应 quarkus-amazon-services-sns 依赖:
<!-- Maven pom.xml -->
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-amazon-services-sns</artifactId>
<!-- 推荐使用最新稳定版,例如: -->
<version>3.15.2</version>
</dependency>同时确认 application.properties 配置简洁有效(无需冗余参数):
由夸克扫描王提供的文件格式转换工具。当用户需要将图片、截图或扫描件转换为 Office 文档(Word/Excel)或 PDF 时,使用此技能。适用于包含复杂表格、合同或图文混排内容的图片或扫描件,可尽量还原原始版式并生成可编辑文档。即使用户未明确提到格式转换,只要用户的需求涉及将图片内容转换为可编辑文档(如 .docx、.xlsx 或 .pdf),也应触发此技能。请勿用于提取纯文本或识别文字内容、图像增强处理或从零创建文档
# ✅ 推荐精简配置 quarkus.sns.aws.region=ap-southeast-1 quarkus.sns.aws.credentials.type=default test.sns.notification=arn:aws:sns:ap-southeast-1:655163477595:test-sns-topic
⚠️ 注意事项:
- 避免混用
quarkus-aws-lambda或其他旧版 AWS 扩展,它们可能引入冲突的 SDK 版本;- 若使用自定义
SnsClient(非 Quarkus 自动注入),请确保其 builder 显式指定region(Region.AP_SOUTHEAST_1);- 凭证优先级:
default类型会读取~/.aws/credentials和~/.aws/config,请确认profile匹配且region在 config 文件中声明(如[default] region = ap-southeast-1);- 开发阶段可启用 DEBUG 日志定位实际请求地址:
quarkus.log.category."software.amazon.awssdk".level=DEBUG
升级后,原业务代码无需修改,SnsClient.publish() 将准确路由至目标区域 endpoint,404 错误即消失。这也印证了 Quarkus 生态中“依赖版本一致性”对云服务集成的关键影响——一次精准升级,远胜于反复验证基础设施配置。

















