如何在映射模板中添加换行符

How to add a newline in a mapping template

似乎微不足道,但我无法让它工作:我将编码为 JSON 对象的数据发送到调用 Firehose 的 API 网关。 S3 中生成的文件在一行中包含所有 JSON 对象。我读过应该可以添加换行符,但无论我尝试什么,要么出现错误,要么根本不执行任何操作。映射模板如下所示

{
    "DeliveryStreamName": "file-datadump",
    "Record": { 
    "Data": "$util.base64Encode($input.json('$'))"
    }
}

有什么想法吗?

不再有效! - 不要使用

我遇到了完全相同的问题。根据这个 helpful git issue,你可以通过附加一个 base64 编码的换行符来破解它,例如:

{
    "DeliveryStreamName": "$stageVariables.delivery_stream",
    "Record": {
        "Data":"$util.base64Encode($input.params().querystring)Cg=="
    }
}

不太理想,但希望对您有所帮助!

答案简单得离谱。只需在映射模板中像这样添加一个换行符。

#set($payload = "$input.json('$')
")
{
   "DeliveryStreamName": "stream-name",
   "Record": { 
      "Data": "$util.base64Encode($payload)"
   }
}