我的管道如下:
Firehose-> Lambda(AWS的Java SDK)->(S3和Redshift)
未编码的(原始)JSON记录已提交给Firehose。然后,它会触发Lambda函数,并对其进行轻微转换。然后,Firehose将转换后的记录放入S3存储桶和Redshift中。
要让Firehose将转换后的数据添加到S3,它需要对数据进行Base64编码(Firehose在将数据添加到S3之前先对其进行解码)。
但是,我在数据中有一个URL,在解码时,=
个字符被替换为其等效的unicode字符(\u003d
),因为它是Amazon Base64解码器用作填充的字符
https://www.[snipped].com/...?returnurl \ u003dnull \ u0026referrer \ u003dnull
如何在已解码的数据中保留这些=
个字符?
注意:我尝试使用Base64.getUrlEncoder()
,但AWS似乎仅支持Base64.getEncoder()
。
答案 0 :(得分:0)
事实证明,当我对Lambda记录进行反序列化时,我正在使用的JSON库(Gson)上启用了HTML转义。要解决此问题,我只需要禁用HTML转义:
new GsonBuilder().disableHtmlEscaping().create();