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

如何修改Step Functions的SQS消息体以去除Input层级?

问题:Step Functions SQS发送消息需去除多余的Input层级

我的Step Functions最后一步是向SQS队列发送消息,当前的状态机HCL配置如下:

Type = "Task",
Resource = "arn:aws:states:::sqs:sendMessage",
Parameters = {
  QueueUrl: "${var.queue_url}"
  MessageBody: {
    "Input.$": "$"
  }
}

该配置可正常运行,但生成的SQS消息格式带有多余的Input层级:

{
  "Body": {
    "Input": { 
      // 实际内容
    }
  }
}

我希望去掉Input层级,让消息格式变为:

{
  "Body": {
    // 实际内容
  }
}

我曾尝试用"$": "$"替代"Input.$": "$"但未成功,请问MessageBody的正确配置值是什么?


解决方案

你需要直接将MessageBody通过路径引用绑定到当前状态的输入,而不是嵌套在一个对象里。修改后的HCL配置如下:

Type = "Task",
Resource = "arn:aws:states:::sqs:sendMessage",
Parameters = {
  QueueUrl: "${var.queue_url}"
  MessageBody.$: "$"
}

说明

之前的配置中,你把MessageBody设置为一个包含Input.$键的对象,所以SQS收到的消息体自然会多一层Input结构。而直接使用MessageBody.$: "$",会让Step Functions把当前状态的完整输入直接作为MessageBody的内容,从而得到你期望的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:27:37