SerializationException:找到不期望的结构或映射的开始:API网关到步骤功能

时间:2018-01-11 16:07:11

标签: amazon-web-services aws-api-gateway aws-step-functions

我正在使用标准的博客教程,将api网关与步骤函数集成在一起: https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-api-gateway.html

我的步骤函数需要以下输出:

{
  "my_params": {
     "config": "config_value"
  }
}

博客中提到的发布请求所需的请求正文是:

{
 "input": "{}",
   "name": "MyExecution",
   "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld"
}

我正在传递我所需的输入:

{
 "input": {
           "my_params": {
             "config": "config_value"
             }
          },
  "name": "MyExecution",
  "stateMachineArn": "my-arn"
}

但是,我不断收到以下错误:

{
"__type": "com.amazon.coral.service#SerializationException",
  "Message": "Start of structure or map found where not expected."
}

有人可以告诉我这里究竟是什么问题吗?我在这做错了什么?快速帮助表示赞赏。

3 个答案:

答案 0 :(得分:4)

为参数使用转义字符,如下所示

{
 "input": "{
           \"my_params\": {
             \"config\": \"config_value\"
             }
          }",
  "name": "MyExecution",
  "stateMachineArn": "my-arn"
}

答案 1 :(得分:0)

我遇到了类似的问题。我发现需要转义输入参数引号字符,但是现在遇到了这个问题:

{
    "__type": "com.amazon.coral.service#SerializationException"
}

{
    "input": "{
        \"TableName\": \"Rooms\",
        \"RoomName\": \"BedRoom1\"
    }",
    "name": "MyExecution",
    "stateMachineArn": "arn:aws:states:us-west-1:xxxxxxcx:stateMachine:xxxxx"
}

有什么建议吗?谢谢

答案 2 :(得分:0)

对于面临以下问题的人们,当尝试使用JSON有效负载(从控制台)设置数据时

  

将JSON有效负载转换为base64字符串

请求正文,例如

 {
       "Data":  { 
          "name": "Dean",
          "role": "actor"
        },
       "StreamName": "yourstream",
       "Partitionkey": "youPartitionKey"
       }
       }

错误

{
  "__type": "SerializationException",
  "Message": "Start of structure or map found where not expected."
}
  

转到方法执行面板->集成请求(AWS)->映射   模板->请求正文通过

现在添加模板, 在模板中编写代码,以将Data键的JSON有效负载转换为base64字符串

{
    "Data": "$util.base64Encode($input.json('$.Data'))",
....
}

希望这会有所帮助!!! 谢谢