How to call S3.putObject (or S3.upload) and use a gzip stream as body

As our logging mechanism is not able to create big gz-files, I’m trying to do it with a lambda. It works when I load all of them from S3 into the memory and afterwards create the gzip file. But this needs too much memory. This is why I try the following: Start a gzip stream into memory and when I receive the content of a file from S3, I write it to the gzip stream. Without luck. Besides other ideas, I tried the code below.