在 API 网关的 Body 中添加 JSON object 到 Kinesis 代理?
Add JSON object in Body of API Gateway to Kinesis proxy?
我已将 API 网关配置为 Kinesis 代理,如 Amazon’s tutorial 中所述,用于将记录放入 Kinesis 流中。
集成请求的 HTTP headers 是:
stream-name
映射到 method.request.header.stream-name
partition-key
映射到 method.request.header.partition-key
Content-Type
映射到 application/x-amz-json-1.1
content-type application/json
的 body 映射模板如下所示:
{
"StreamName": "$input.params('stream-name')",
"PartitionKey": "$input.params('partition-key')",
"Data": "$util.base64Encode({"rows": "$input.json('$')", "uuid": "$input.params('uuid')"})"
}
数据作为 JSON-request 有效载荷传入。我们应该将 uuid
参数作为 JSON-object 键添加到 Kinesis 的 data-payload 中,但是发送到 Kinesis 的编码数据不是 JSON object .
需要在 data-payload 中添加参数 uuid
作为 json-object 键以进行运动。我面临的问题是,发送到 kinesis 的编码数据不是 JSON object。
我希望发送到 Kinesis 的数据应该是 JSON object:
{
"rows": [{"id": 1, "name": "a"}, {"id": 2, "name": "b"}],
"uuid": "0001"
}
但发送到 Kinesis 的实际数据如下所示:
{
rows=[{"id": 1, "name": "a"}, {"id": 2, "name": "b"}],
uuid=0001
}
如何从 API 网关向 Kinesis 发送 JSON object?我一直在试验 $util.parseJson
但找不到针对这种情况的解决方案。
您需要在 velocity 模板中转义双引号
#set($event = "{
""rows"": ""$input.json('$')"",
""uuid"": ""$input.params('uuid')"",
}")
{
"StreamName": "$input.params('stream-name')",
"Data": "$util.base64Encode($event)",
"PartitionKey": "$input.params('partition-key')"
}
这是 aws 论坛上关于通过 api 网关向 kinesis 发送数据的类似问题 https://forums.aws.amazon.com/thread.jspa?threadID=233060
我已将 API 网关配置为 Kinesis 代理,如 Amazon’s tutorial 中所述,用于将记录放入 Kinesis 流中。
集成请求的 HTTP headers 是:
stream-name
映射到method.request.header.stream-name
partition-key
映射到method.request.header.partition-key
Content-Type
映射到application/x-amz-json-1.1
content-type application/json
的 body 映射模板如下所示:
{
"StreamName": "$input.params('stream-name')",
"PartitionKey": "$input.params('partition-key')",
"Data": "$util.base64Encode({"rows": "$input.json('$')", "uuid": "$input.params('uuid')"})"
}
数据作为 JSON-request 有效载荷传入。我们应该将 uuid
参数作为 JSON-object 键添加到 Kinesis 的 data-payload 中,但是发送到 Kinesis 的编码数据不是 JSON object .
需要在 data-payload 中添加参数 uuid
作为 json-object 键以进行运动。我面临的问题是,发送到 kinesis 的编码数据不是 JSON object。
我希望发送到 Kinesis 的数据应该是 JSON object:
{
"rows": [{"id": 1, "name": "a"}, {"id": 2, "name": "b"}],
"uuid": "0001"
}
但发送到 Kinesis 的实际数据如下所示:
{
rows=[{"id": 1, "name": "a"}, {"id": 2, "name": "b"}],
uuid=0001
}
如何从 API 网关向 Kinesis 发送 JSON object?我一直在试验 $util.parseJson
但找不到针对这种情况的解决方案。
您需要在 velocity 模板中转义双引号
#set($event = "{
""rows"": ""$input.json('$')"",
""uuid"": ""$input.params('uuid')"",
}")
{
"StreamName": "$input.params('stream-name')",
"Data": "$util.base64Encode($event)",
"PartitionKey": "$input.params('partition-key')"
}
这是 aws 论坛上关于通过 api 网关向 kinesis 发送数据的类似问题 https://forums.aws.amazon.com/thread.jspa?threadID=233060