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

如何使用JQ解析AWS Auto Scaling生命周期钩子SQS消息中转义引号的Body

解析AWS Auto Scaling生命周期钩子的SQS消息(Body含转义JSON)

核心解决方案

使用jq内置的fromjson函数,将Body字段中的转义JSON字符串转换为标准JSON对象:

jq '.Messages[] | .Body |= fromjson' your-sqs-message-file.json

分步解释

  1. 遍历消息数组:.Messages[] 会逐个处理SQS返回的每条消息
  2. 解析转义内容:.Body |= fromjson 会把Body里的转义字符串解析为可操作的JSON结构,后续可以直接访问Body内的字段,比如提取EC2实例ID:
    jq '.Messages[] | .Body |= fromjson | .Body.EC2InstanceId' your-sqs-message-file.json
    

验证效果

用你提供的示例消息执行上述命令后,Body字段会被解析为正常的JSON对象,输出结果如下:

{
  "Body": {
    "Origin": "AutoScalingGroup",
    "LifecycleHookName": "termination_lifecycle_hook",
    "Destination": "EC2",
    "AccountId": "<redacted>",
    "RequestId": "65e1eaeb-1bde-42ef-93b5-ac14987a2848",
    "LifecycleTransition": "autoscaling:EC2_INSTANCE_TERMINATING",
    "AutoScalingGroupName": "test-um-prod-20230822043811258400000005",
    "Service": "AWS Auto Scaling",
    "Time": "2023-08-29T20:42:36.581Z",
    "EC2InstanceId": "i-02ca28b1a415a4d48",
    "LifecycleActionToken": "1e7f23b9-4a9a-4cad-9051-6039d815e9b1"
  },
  "ReceiptHandle": "AQEBN8E7SCNS44lemWqlfMVvOl9EfGo7Yb5b+VhF5jXlw2i41pwQJFvfaAFwBEquO8SOsGyaIUfFiE9qEUQoQOgyUoz5a+Rx/yD9jq2qfz/gRcSwhfCAPHyBvhjJdIGmlyKtNnTzuL183Wti4BO4G+Z7bLzn/WiIT+JrSfn/VofI34HnB0w0Om3UYTnd6OoXuCu2WxzasyMeFcImuCYdt+5+tMzauEtsL7EVdSZwpW3S4oatkuxfzzyxHsP4X0IIKt6fwIzHzCRhi9kmo5QnZAQCnjHo+RBNZXWU9wbk3SToE3nCdLJhbups5SOHAUHLO1PwdVb7RvKMmYYdHfzoTQBLeWJ1w7MEMrhANC9uOu7cVzS0hAAc9qPLzzoV1TkIBn/0Q597cl6dNyfkWpPQEOKtUg==",
  "MD5OfBody": "fa2bc63f28d96c532288b09831a8b73f",
  "MessageId": "4c5b0c2c-9085-4bde-8de3-49ae3f63afd4"
}

这种方式无需修改AWS端的任何配置——SQS将嵌套JSON作为转义字符串传递是标准行为,通过jq的fromjson即可完美解决解析问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:13:14