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

无法通过AWS IoT Rule触发AWS Lambda函数问题求助

问题:AWS IoT规则调用Lambda未触发的排查

我正在进行AWS IoT规则实验,规则接收IoT设备发送的SMILE编码且经Snappy压缩的Payload,并最终发布到Kafka主题。

当前正常工作的配置

  • 以下SQL配置的IoT规则可正常运行,无需解码就能将设备的SMILE编码Payload以JSON格式发布到Kafka:
SELECT decode(encode(*,'base64'),'base64') as payload FROM 'mqtt_topic'
  • 设备发送的Payload示例:
kqIY8G06KQoB+oNAZHRvQkJhdIRpdGVtc
  • 发布到Kafka的未解码JSON格式Payload:
{
  "payload": "kqIY8G06KQoB+oNAZHRvQkJhdIRpdGVtc"
}

需求与遇到的问题

现在需要在AWS IoT规则中先解码Payload,再发布到Kafka主题,因此我编写了Java版的AWS Lambda函数用于解码SMILE编码的Payload。

根据AWS官方文档,使用aws_lambda()函数触发Lambda时,需要传递两个参数:第一个是Lambda函数的ARN,第二个是JSON格式的输入参数。我尝试用以下SQL构造JSON格式内容并传递给Lambda,但Lambda未被触发:

SELECT value aws_lambda("arn:aws:lambda:region:account-id:function:DeserializerFunction", {"payload": decode(encode(*,'base64'),'base64')}) from 'mqtt_topic'

可触发Lambda的修改方案(但不想采用)

如果修改SQL查询及设备发送的Payload结构,Lambda可被正常触发,但我不想修改设备的Payload结构:

  • 修改后的SQL查询:
SELECT value aws_lambda("arn:aws:lambda:region:account-id:function:DeserializerFunction", *) from 'mqtt_topic'
  • Payload对比:
    原Payload:
    kqIY8G06KQoB+oNAZHRvQkJhdIRpdGVtc
    
    修改后Payload:
    {
      "payload": "kqIY8G06KQoB+oNAZHRvQkJhdIRpdGVtc"
    }
    

我已花费大量时间排查但未解决问题,请问我遗漏了什么?能否帮忙分析Lambda未触发的原因?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:35:25