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
image/*
wasn't working for me, but*/*
was working. It still doesn't work for .ICO images (such asfavicon.ico
), but nothing else has, so I'm going to chalk it up to API Gateway quirkiness. – Teenateenage