You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQS触发的Lambda无法解码消息体,如何正确解析?

解决SQS触发Lambda时消息体的转义/解码问题

当SQS触发Lambda时,日志里的消息体出现大量转义字符,本质是消息体被双重序列化了——发送时把JSON对象转成了字符串,Lambda接收到的body就是这个带转义的字符串,需要再解码一次才能拿到原始数据。

Python 解决方案

  1. 从Lambda事件中提取并解码消息体:
import json

def lambda_handler(event, context):
    # 获取第一条SQS记录的原始消息体
    raw_body = event['Records'][0]['body']
    # 解码带转义的JSON字符串
    parsed_body = json.loads(raw_body)
    # 正常访问业务数据
    print(parsed_body.get('target_key'))
    return {
        'statusCode': 200,
        'body': json.dumps('处理完成')
    }

Node.js 解决方案

  1. 提取并解码消息体:
exports.handler = async (event) => {
    // 获取第一条SQS记录的原始消息体
    const rawBody = event.Records[0].body;
    // 解码带转义的JSON字符串
    const parsedBody = JSON.parse(rawBody);
    // 正常访问业务数据
    console.log(parsedBody.targetKey);
    return {
        statusCode: 200,
        body: JSON.stringify('处理完成')
    };
};

关键注意事项

  • 避免双重序列化:发送SQS消息时,仅需将JSON对象序列化一次(Python用json.dumps(),Node.js用JSON.stringify()),不要对已序列化的字符串再次执行序列化操作。
  • 若消息体是普通文本而非JSON,直接使用raw_body即可;若仍有转义,检查发送端是否额外做了编码处理(比如Base64)。

内容的提问来源于stack exchange,提问作者Arif Bilgin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:15:45