Saluran pipa saya adalah sebagai berikut:
Firehose -> Lambda (AWS' Java SDK) -> (S3 & Redshift)
Catatan JSON yang tidak dikodekan (mentah) dikirimkan ke Firehose. Ini kemudian memicu fungsi Lambda yang sedikit mengubahnya. Firehose kemudian memasukkan rekaman yang telah diubah ke dalam bucket S3 dan ke dalam Redshift.
Agar Firehose dapat menambahkan data yang diubah ke S3, data tersebut harus dikodekan Base64 (dan Firehose mendekodekannya sebelum menambahkannya ke S3).
Namun, saya memiliki URL di dalam data yang, ketika didekodekan, =
karakter diganti dengan karakter unicode yang setara (\u003d
) karena itu adalah karakter yang digunakan decoder Base64 Amazon sebagai padding.
https://www.[snipped].com/...?returnurl=batal&perujuk=batal
Bagaimana cara mempertahankan =
karakter tersebut dalam data yang didekodekan?
Catatan: Saya sudah mencoba menggunakan Base64.getUrlEncoder()
, namun AWS sepertinya hanya mendukung Base64.getEncoder()
.
=
dengan\u003d
. Menariknya, data S3 juga ditambahkan ke Redshift melalui Firehose, dan Redshift memang menampilkan karakter=
. - person Jacob G.   schedule 18.07.2018\u003d
tidak setara dengan=
dalam file teks utf-8, tetapi dalam JSON dan tentu saja antarmuka ke Lambda selalu JSON (meskipun tidak relevan jika data masuk dan keluar selalu diwakili dalam base64). Saya sebenarnya tidak cukup memahami pengaturan Anda untuk mengetahui apakah ini merupakan spekulasi yang berguna bagi saya. - person Michael - sqlbot   schedule 18.07.2018