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

AWS CLI查询AWS IoT设备影子时返回null的问题排查

问题原因与解决方案

你的问题出在AWS CLI对get-thing-shadow命令的响应结构处理上:

  • 当你直接指定输出文件(比如shadow.json)时,CLI会将设备影子的原始JSON内容(包含state、metadata等字段)写入文件,这也是你在shadow.json中看到的内容。
  • 但当你使用--query参数时,CLI是对完整的API响应结构进行查询,而这个响应的顶层字段是payload——设备影子的JSON内容被包裹在这个字段中(且是字符串格式),而非直接作为顶层结构存在。

你在线测试JMESPath时用的是shadow.json里的纯影子内容,所以state.desired有效;但CLI的查询对象是包含payload的完整响应,自然找不到顶层的state字段,返回null。

解决方法

方法1:使用JMESPath的from_json函数解析payload字符串

直接在--query中先将payload字段的字符串解析为JSON对象,再查询目标字段:

aws iot-data get-thing-shadow --thing-name 1234567 --query 'from_json(payload).state.desired'

方法2:先保存影子文件,再用工具查询

如果你习惯先保存完整影子,可结合jq工具过滤内容:

# 先保存纯影子内容到文件(注意不要加--output=json)
aws iot-data get-thing-shadow --thing-name 1234567 shadow.json
# 用jq查询目标字段
jq '.state.desired' shadow.json

注意事项

  • 避免同时使用--output=json和指定输出文件,这会导致输出的是包含payload的API响应结构,而非纯影子内容。
  • 你的AWS CLI版本2.10.0完全支持from_json函数,无需升级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:09:28