7

我正在使用标准博客教程将 api gateway 与 step 函数从这里集成: 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."
}

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

4

2 回答 2

14

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

{
 "input": "{
           \"my_params\": {
             \"config\": \"config_value\"
             }
          }",
  "name": "MyExecution",
  "stateMachineArn": "my-arn"
}
于 2018-03-28T14:51:37.210 回答
-1

对于遇到以下问题的人,在尝试使用 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 key 的 JSON payload 转换为 base64 字符串

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

希望这可以帮助!!!谢谢

于 2019-05-11T10:00:18.360 回答