Search code examples
aws-lambdaserverlessimage-upload

Serverless I image upload to S3 broken after deploy, local worked only


I trying to upload an image to S3 uses serverless and NodeJS but something wrong after upload. In local uses serverless-offline everything worked like champ but after deploy I got this error. Then I tried to intercept and detect what's happened and see this result:

Some strange character appeared in image body such as <0x0a> 0x01 0x04

enter image description here

I also tried to use serverless-apigw-binary but not luck.


Solution

  • Self Answer

    Very lucky I just found the solution at binary-media-types

    Add this to serverless.yml.

    provider:
      # others
      apiGateway:
        binaryMediaTypes:
          - '*/*'
    

    No need serverless-apigw-binary

    No need this as well

    const binaryMimeTypes = [
      'image/gif',
      'image/png',
      'image/jpeg',
      'image/jpg',
    ];
    ...
    
    return serverless.createServer(expressApp, null, binaryMimeTypes)