n.n*_*asa 4 amazon-web-services amazon-kinesis aws-api-gateway
我已将 API 网关配置为 Kinesis 代理,如亚马逊将记录放入 Kinesis 流的教程中所述。
集成请求的 HTTP 标头是:
stream-name 映射到 method.request.header.stream-namepartition-key 映射到 method.request.header.partition-keyContent-Type 映射到 application/x-amz-json-1.1内容类型的主体映射模板application/json如下所示:
{
"StreamName": "$input.params('stream-name')",
"PartitionKey": "$input.params('partition-key')",
"Data": "$util.base64Encode({"rows": "$input.json('$')", "uuid": "$input.params('uuid')"})"
}
Run Code Online (Sandbox Code Playgroud)
数据以 JSON 请求负载的形式出现。我们应该将一个uuid参数作为 JSON 对象键添加到 Kinesis 的数据负载中,但发送到 Kinesis 的编码数据不是 JSON 对象。
需要将参数uuid作为 json-object 键添加到 kinesis 的 data-payload 中。我面临的问题是,发送到 kinesis 的编码数据不是 JSON 对象。
我希望发送到 Kinesis 的数据应该是一个 JSON 对象:
{
"rows": [{"id": 1, "name": "a"}, {"id": 2, "name": "b"}],
"uuid": "0001"
}
Run Code Online (Sandbox Code Playgroud)
但发送到 Kinesis 的实际数据如下所示:
{
rows=[{"id": 1, "name": "a"}, {"id": 2, "name": "b"}],
uuid=0001
}
Run Code Online (Sandbox Code Playgroud)
如何将 JSON 对象从 API 网关发送到 Kinesis?我一直在试验,$util.parseJson但找不到这种情况的解决方案。
您需要在速度模板中转义双引号
#set($event = "{
""rows"": ""$input.json('$')"",
""uuid"": ""$input.params('uuid')"",
}")
{
"StreamName": "$input.params('stream-name')",
"Data": "$util.base64Encode($event)",
"PartitionKey": "$input.params('partition-key')"
}
Run Code Online (Sandbox Code Playgroud)
这是 aws 论坛上的一个类似问题,用于通过 api 网关将数据发送到 kinesis https://forums.aws.amazon.com/thread.jspa?threadID=233060
| 归档时间: |
|
| 查看次数: |
1648 次 |
| 最近记录: |