AWS Lambda / Firehose是否支持Base64 URL解码?

时间:2018-07-17 16:04:02

标签: java amazon-web-services amazon-s3 aws-lambda amazon-kinesis-firehose

我的管道如下:

  

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()

1 个答案:

答案 0 :(得分:0)

事实证明,当我对Lambda记录进行反序列化时,我正在使用的JSON库(Gson)上启用了HTML转义。要解决此问题,我只需要禁用HTML转义:

new GsonBuilder().disableHtmlEscaping().create();