作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我当前使用以下映射模板将发送到 AWS API Gateway 终端节点的数据传递到 AWS Kinesis Firehose 流:
{
"DeliveryStreamName": "[STREAMNAME]",
"Record": {
"Data": "$util.base64Encode($input.body)"
}
}
我想做的是:将信息添加到正在编码的 $input.body
中,就像客户端的 $context.identity.sourceIp
一样请求。
当传递到 Kinesis Firehose 的输出需要进行 Base64 编码时,我该如何处理?理想情况下,我希望发布到 Kinesis Firehose 的数据如下所示:
{
"x": 1,
"y": 2,
"z": 3,
..., // all the properties from the JSON-request by the client
"clientIp": "x.x.x.x" // property added by API-Gateway into client's object
}
最佳答案
经过一番挖掘,我成功实现了以下功能:
#set($inputRoot = $input.path('$'))
#set($data = "{
#foreach($key in $inputRoot.keySet())
""$key"": $input.json($key),
#end
""clientIP"": ""$context.identity.sourceIp"",
}")
{
"DeliveryStreamName": "[STREAMNAME]",
"Record": {
"Data": "$util.base64Encode($data)"
}
}
我不知道你可以在#set 中执行#foreach。请注意,您还必须使用双引号才能正确完成此操作。
关于base64 - AWS API网关和Kinesis Firehose集成: Adding Additonal data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40309657/
我当前使用以下映射模板将发送到 AWS API Gateway 终端节点的数据传递到 AWS Kinesis Firehose 流: { "DeliveryStreamName": "[STR
我是一名优秀的程序员,十分优秀!