我正在使用标准的博客教程,将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."
}
有人可以告诉我这里究竟是什么问题吗?我在这做错了什么?快速帮助表示赞赏。
答案 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'))",
....
}
希望这会有所帮助!!! 谢谢