AWS Api Gateway as a HTTP Proxy is currupting bina

2020-02-29 10:08发布

问题:

I have a ruby on rails app that takes an image file, "attaches it to a member", and uploads it to s3. When I use insomnia and POST directly to the app ... it works, however when I use the exact same endpoint behind AWS Api Gateway, the image is corrupt and not viewable.


Here is the comparison of the requests.

  • LEFT = directly posted to the rails app
  • RIGHT = through api gateway

https://www.diffchecker.com/wwUmpB5W

Something I noticed, is that the paperclip gem is running different commands. It's evident that paperclip realized that the file is not an image when being passed through API gateway.


Here are some potentially relevant screenshots


Here is the rails code:

def create
  logger.info 'upload_attachment_api_general_v1'
  logger.info params
  logger.info request.env
  @file = current_merchant.members.find(params[:member_id]).attachments.new(file: params[:file], label: params[:label])
  if params[:file] && @file.save
    render json: @file
  else
    render json: @file.errors, status: :unprocessable_entity
  end
end

回答1:

I figured it out. The content type is NOT an image/png ... the content type is multipart/form-data