-
-
Save basimhennawi/21c39f9758b0b1cb5e0bd5ee08b5be58 to your computer and use it in GitHub Desktop.
| # Must be run on an Amazon Linux AMI that matches AWS Lambda's runtime | |
| # As of Dec 6, 2018, this is Amazon Linux AMI – amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2 | |
| # Check latest from here: https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html | |
| # SSH to Amazon Linux AMI instance, that you just created: | |
| ssh -i ${EC2_KEY} ${EC2_USERNAME}@${EC2_IP} | |
| sudo yum -y install libpng-devel libjpeg-devel libtiff-devel gcc | |
| # GraphicsMagick download latest stable as of Dec 6, 2018, this is 1.3.31 (latest stable) | |
| curl -O https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/1.3.31/GraphicsMagick-1.3.31.tar.gz | |
| tar zxvf GraphicsMagick-1.3.31.tar.gz | |
| cd GraphicsMagick-1.3.31 | |
| ./configure --prefix=/var/task/graphicsmagick --enable-shared=no --enable-static=yes | |
| make | |
| sudo make install | |
| tar zcvf ~/graphicsmagick.tgz /var/task/graphicsmagick/ | |
| # Now you need to copy this tar file locally | |
| scp -i ${EC2_KEY} ${EC2_USERNAME}@${EC2_IP}:imagemagick.tgz . | |
| # Extract it and put it in your lambda function root to be packaged, zipped and deployed | |
| # Assuming imagemagick dir is at the root of the lambda function, add the following: | |
| const BIN_PATH = process.env['LAMBDA_TASK_ROOT'] + "/graphicsmagick/bin/"; | |
| const Gm = require('gm').subClass({ appPath: BIN_PATH }); | |
| # And inside the handler: | |
| process.env['PATH'] = process.env['PATH'] + ':' + BIN_PATH; |
| # Must be run on an Amazon Linux AMI that matches AWS Lambda's runtime | |
| # As of Dec 6, 2018, this is Amazon Linux AMI – amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2 | |
| # Check latest from here: https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html | |
| # | |
| # Lambda includes ImageMagick 6.7.8-9 preinstalled, so you need to prepend PATH | |
| # with the folder containing these binaries in your Lambda function to ensure | |
| # these newer binaries are used. | |
| # SSH to Amazon Linux AMI instance, that you just created: | |
| ssh -i ${EC2_KEY} ${EC2_USERNAME}@${EC2_IP} | |
| sudo yum -y install libpng-devel libjpeg-devel libtiff-devel gcc | |
| curl -O http://www.imagemagick.org/download/ImageMagick.tar.gz | |
| tar zxvf ImageMagick.tar.gz | |
| cd ImageMagick | |
| ./configure --prefix=/var/task/imagemagick --enable-shared=no --enable-static=yes | |
| make | |
| sudo make install | |
| tar zcvf ~/imagemagick.tgz /var/task/imagemagick/ | |
| # Now you need to copy this tar file locally | |
| scp -i ${EC2_KEY} ${EC2_USERNAME}@${EC2_IP}:imagemagick.tgz . | |
| # Extract it and put it in your lambda function root to be packaged, zipped and deployed | |
| # Assuming imagemagick dir is at the root of the lambda function, add the following: | |
| const BIN_PATH = process.env['LAMBDA_TASK_ROOT'] + "/graphicsmagick/bin/"; | |
| const Gm = require('gm').subClass({ appPath: BIN_PATH }); | |
| # And inside the handler: | |
| process.env['PATH'] = process.env['PATH'] + ':' + BIN_PATH; |
@joshuakwaite
Thanks for your comment. In my case, I can't get permission to execute GraphicsMagick from /var/task.
I copied to /tmp and give it permission 755 as mentioned: https://stackoverflow.com/questions/27708573/aws-lambda-making-video-thumbnails/29001078#29001078
Do you mind to share how did you overcome this issue?
@jp928 I was never able to actually get this to run. I got as far as successfully building and extracting the binaries, but still couldn't get it to work inside Lambda.
Did anyone managed to make this work?
@guzz
The binary mentioned in this post works.
Hello,
i have tried launching this binary for converting from PNG => JPG , changing also the colorspace to 16-bit RGB, but it gives me an error saying it requires some config file.
./gm convert ./logo_xs.png -colorspace RGB -colors 65535 ./logo_xs.jpg
./gm convert: Unable to access configuration file (delegates.mgk) [No such file or directory].
I removed the lib folder, that may be the reason.
Does the program require the lib folder to be in the same folder as the executable?
I thought it was completely stand-alone
EDIT: i will try this solution https://superuser.com/questions/428553/install-compiled-binary-in-non-standard-environment
The link for downloading GraphicsMagick zipped was broken for me (it is a redirect link), so I went to the source and got this link which worked (but I had to unzip it with a different command, tar xf ) - https://versaweb.dl.sourceforge.net/project/graphicsmagick/graphicsmagick/1.3.31/GraphicsMagick-1.3.31.tar.xz