使用Kotlin创建AWS SQS队列时遭遇反序列化异常求助
AWS SQS 创建队列时反序列化错误排查
错误信息
aws.smithy.kotlin.runtime.serde.DeserializationException: Unexpected JSON token at offset 0; found <, expected one of {, [, ", null, true, false, <number>
相关代码
val createQueueRequest = CreateQueueRequest { queueName = queueNameVal } sqsClient.createQueue(createQueueRequest)
问题分析与排查步骤
这个错误说明SQS客户端收到的响应不是预期的JSON格式,而是以<开头的内容(大概率是HTML错误页面,比如权限不足、区域配置错误导致的4xx/5xx页面)。以下是针对性排查方向:
- 验证AWS凭证权限:确认使用的Access Key和Secret Key具备
sqs:CreateQueue权限,且凭证未过期。可执行aws sts get-caller-identity命令校验身份有效性。 - 检查区域配置:SQS是区域级服务,客户端配置的区域必须与目标队列所在区域完全一致,否则会请求错误端点返回非JSON响应。
- 排查网络环境:若处于代理或防火墙后,确保允许访问对应区域的SQS服务端点。部分网络会拦截请求并返回HTML格式的拦截页面。
- 确认队列名称合规:SQS队列名称仅允许字母、数字、连字符、下划线、点号,长度限制1-80字符。名称不符合规范时,服务可能返回非JSON错误。
- 开启日志排查:将Kotlin SQS客户端日志级别设为DEBUG,捕获完整请求和响应内容,确认返回的HTML具体错误类型,定位问题根源。
客户端初始化示例(确保区域配置正确)
val sqsClient = SqsClient.fromEnvironment { region = "us-east-1" // 替换为实际使用的AWS区域 }
内容的提问来源于stack exchange,提问作者sbalu
相关产品推荐
相关产品推荐

