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

如何在CloudWatch Logs Insights中处理字符串化JSON数组并索引元素

解决CloudWatch Logs Insights访问JSON数组元素的问题

1. 直接按索引提取数组元素(无需unnest)

如果要在单条日志中获取数组指定索引的元素字段,不需要使用unnest,解析数组后直接用索引访问即可:

fields 
  jsonParse(array) as parsedArray,
  parsedArray[0].itemId as first_item_id,
  parsedArray[0].site as first_site,
  parsedArray[1].itemId as second_item_id,
  parsedArray[2].site as second_site
| display first_item_id, first_site, second_item_id, second_site

2. 正确使用unnest展开数组元素

你之前用unnest array into item的写法是正确的,它的作用是将原单条日志拆分为多条日志,每条对应数组中的一个元素,并非只返回一个元素。比如原日志包含3个元素的数组,执行后会生成3条日志,每条的item对应数组里的一个对象。要查看所有元素的字段,用以下语句:

fields jsonParse(array) as parsedArray
| unnest parsedArray as item
| display item.itemId, item.site, item.age

3. 为什么你的索引式unnest写法不生效

unnest的语法规则是unnest <数组字段> into <单个变量名>,它的功能是拆分数组元素为独立日志条目,不支持同时将多个索引元素赋值给不同变量,所以你写的unnest array into items.0, items.1, items.2不符合语法,无法生效。

关键注意事项

确保Lambda输出的是标准JSON字符串:你的示例日志用了单引号,而标准JSON要求双引号,这会导致jsonParse解析失败。Lambda中必须用JSON.stringify()将数组转为标准JSON后再输出:

const logArray = [
  { itemId: 1, site: 'CND', age: 5 },
  { itemId: 2, site: 'USC', age: 3 },
  { itemId: 3, site: 'NYC', age: 7 }
];
console.info(JSON.stringify(logArray));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:22:33