From a0c7e9e6a7739cef94ea570dac1a179cf282e4f0 Mon Sep 17 00:00:00 2001 From: rpidanny Date: Thu, 6 May 2021 13:12:11 +0200 Subject: [PATCH] feat: add amazon-linux-2 versions --- .gitignore | 4 +- README.md | 22 +++++++-- Dockerfile => amazon-linux-2/Dockerfile | 29 +++++++++-- build.sh => amazon-linux-2/build.sh | 2 +- amazon-linux-2/publish.sh | 32 ++++++++++++ amazon-linux-2/test.sh | 15 ++++++ {test => amazon-linux-2/test}/image1.jpg | Bin amazon-linux-2/test/index.js | 13 +++++ {test => amazon-linux-2/test}/main.py | 0 amazon-linux/Dockerfile | 60 +++++++++++++++++++++++ amazon-linux/build.sh | 6 +++ publish.sh => amazon-linux/publish.sh | 6 +-- test.sh => amazon-linux/test.sh | 0 amazon-linux/test/image1.jpg | Bin 0 -> 37671 bytes {test => amazon-linux/test}/index.js | 0 amazon-linux/test/main.py | 7 +++ 16 files changed, 182 insertions(+), 14 deletions(-) rename Dockerfile => amazon-linux-2/Dockerfile (62%) rename build.sh => amazon-linux-2/build.sh (85%) create mode 100755 amazon-linux-2/publish.sh create mode 100755 amazon-linux-2/test.sh rename {test => amazon-linux-2/test}/image1.jpg (100%) create mode 100644 amazon-linux-2/test/index.js rename {test => amazon-linux-2/test}/main.py (100%) create mode 100644 amazon-linux/Dockerfile create mode 100755 amazon-linux/build.sh rename publish.sh => amazon-linux/publish.sh (73%) rename test.sh => amazon-linux/test.sh (100%) create mode 100644 amazon-linux/test/image1.jpg rename {test => amazon-linux/test}/index.js (100%) create mode 100644 amazon-linux/test/main.py diff --git a/.gitignore b/.gitignore index 24686d4..7be9e65 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ *.zip -layer \ No newline at end of file +layer +.DS_Store +__pycache__ diff --git a/README.md b/README.md index 0523109..e5318a5 100644 --- a/README.md +++ b/README.md @@ -7,16 +7,28 @@ AWS Lambda layer with GraphicsMagick binaries. Click on Layers and choose `Add a layer`, and `Provide a layer version ARN` and enter the following ARN (replace eu-west-1 with the region of your Lambda): ``` -arn:aws:lambda:eu-west-1:175033217214:layer:graphicsmagick:2 +arn:aws:lambda:eu-west-1:175033217214:layer:graphicsmagick-amzn2:1 ``` ![Provide layer ARN](img/usage.png "Provide layer ARN screenshot") -## Version ARNs +## Version ARNs for Amazon Linux 2 Runtimes -| GraphicsMagick version | ARN | -| --- | --- | -| 1.3.31 | `arn:aws:lambda::175033217214:layer:graphicsmagick:2` | +| GraphicsMagick version | ARN | +| ---------------------- | ------------------------------------------------------------------- | +| 1.3.35 | `arn:aws:lambda::175033217214:layer:graphicsmagick-amzn2:1` | + +## Version ARNs for Amazon Linux Runtimes + +| GraphicsMagick version | ARN | +| ---------------------- | ------------------------------------------------------------------ | +| 1.3.35 | `arn:aws:lambda::175033217214:layer:graphicsmagick-amzn:1` | + +## Version ARNs for Legacy Runtimes + +| GraphicsMagick version | ARN | +| ---------------------- | ------------------------------------------------------------- | +| 1.3.31 | `arn:aws:lambda::175033217214:layer:graphicsmagick:2` | ## Available Regions diff --git a/Dockerfile b/amazon-linux-2/Dockerfile similarity index 62% rename from Dockerfile rename to amazon-linux-2/Dockerfile index 61d1611..85bf041 100644 --- a/Dockerfile +++ b/amazon-linux-2/Dockerfile @@ -1,12 +1,33 @@ -FROM lambci/lambda-base:build +FROM amazonlinux:2 RUN yum update -y -RUN yum install -y libpng-devel libjpeg-devel libtiff-devel libuuid-devel gcc +RUN yum install -y \ + make \ + gcc \ + zip \ + tar \ + gzip \ + file \ + lcms2 \ + libSM \ + libXext \ + freetype \ + bzip2-devel \ + libpng-devel \ + libjpeg-devel \ + libtiff-devel \ + libuuid-devel \ + freetype-devel \ + liblcms2-devel + +RUN curl -O http://mirror.centos.org/altarch/7/os/aarch64/Packages/urw-fonts-2.4-16.el7.noarch.rpm && \ + rpm -ivh --nodeps urw-fonts-2.4-16.el7.noarch.rpm ARG GM_VERSION -RUN curl https://versaweb.dl.sourceforge.net/project/graphicsmagick/graphicsmagick/${GM_VERSION}/GraphicsMagick-${GM_VERSION}.tar.xz | tar -xJ && \ +RUN curl -O -L https://versaweb.dl.sourceforge.net/project/graphicsmagick/graphicsmagick/${GM_VERSION}/GraphicsMagick-${GM_VERSION}.tar.gz && \ + tar -xvf GraphicsMagick-${GM_VERSION}.tar.gz && \ cd GraphicsMagick-${GM_VERSION} && \ ./configure --prefix=/opt --enable-shared=no --enable-static=yes --with-gs-font-dir=/opt/share/fonts/default/Type1 && \ make && \ @@ -27,7 +48,7 @@ RUN cp /usr/lib64/liblcms2.so* /opt/lib && \ cp /usr/lib64/libjbig.so* /opt/lib && \ cp /usr/lib64/libxcb.so* /opt/lib && \ cp /usr/lib64/libXau.so* /opt/lib && \ - cp /usr/lib64/libuuid.so /opt/lib/libuuid.so.1 && \ + cp /usr/lib64/libuuid.so /opt/lib/libuuid.so.1 && \ cp /usr/lib64/libbz2.so /opt/lib/libbz2.so.1 RUN mkdir -p /opt/share/fonts/default && \ diff --git a/build.sh b/amazon-linux-2/build.sh similarity index 85% rename from build.sh rename to amazon-linux-2/build.sh index 6861108..973f7ea 100755 --- a/build.sh +++ b/amazon-linux-2/build.sh @@ -1,6 +1,6 @@ #!/bin/sh -export GM_VERSION=1.3.31 +export GM_VERSION=1.3.35 docker build --build-arg GM_VERSION -t gm-lambda-layer . docker run --rm gm-lambda-layer cat /tmp/gm-${GM_VERSION}.zip > ./layer.zip diff --git a/amazon-linux-2/publish.sh b/amazon-linux-2/publish.sh new file mode 100755 index 0000000..822b943 --- /dev/null +++ b/amazon-linux-2/publish.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +GM_VERSION=1.3.35 +LAYER_NAME='graphicsmagick-amzn2' + +REGIONS=' +ap-northeast-1 +ap-northeast-2 +ap-south-1 +ap-southeast-1 +ap-southeast-2 +ca-central-1 +eu-north-1 +eu-central-1 +eu-west-1 +eu-west-2 +eu-west-3 +sa-east-1 +us-east-1 +us-east-2 +us-west-1 +us-west-2 +' + +PROFILE='dev' + +for region in $REGIONS; do + aws lambda add-layer-version-permission --region $region --layer-name $LAYER_NAME \ + --statement-id sid1 --action lambda:GetLayerVersion --principal '*' \ + --version-number $(aws lambda publish-layer-version --region $region --layer-name $LAYER_NAME --zip-file fileb://layer.zip \ + --description "GraphicsMagick ${GM_VERSION} binaries for AmazonLinux2" --query Version --output text --profile $PROFILE) --profile $PROFILE +done diff --git a/amazon-linux-2/test.sh b/amazon-linux-2/test.sh new file mode 100755 index 0000000..6b16243 --- /dev/null +++ b/amazon-linux-2/test.sh @@ -0,0 +1,15 @@ +rm -rf layer && unzip layer.zip -d layer + +cd test + +docker run -i --rm \ + -v "$PWD":/var/task \ + -v "$PWD"/../layer:/opt \ + lambci/lambda:nodejs12.x \ + index.handler + +docker run -i --rm \ + -v "$PWD":/var/task \ + -v "$PWD"/../layer:/opt \ + lambci/lambda:python3.7 \ + main.handler diff --git a/test/image1.jpg b/amazon-linux-2/test/image1.jpg similarity index 100% rename from test/image1.jpg rename to amazon-linux-2/test/image1.jpg diff --git a/amazon-linux-2/test/index.js b/amazon-linux-2/test/index.js new file mode 100644 index 0000000..9d30a0c --- /dev/null +++ b/amazon-linux-2/test/index.js @@ -0,0 +1,13 @@ +const { execSync } = require('child_process') + +exports.handler = async (event) => { + execSync('ls -al /opt/share/fonts/default/Type1', { encoding: 'utf8', stdio: 'inherit' }) + + execSync('gm version', { encoding: 'utf8', stdio: 'inherit' }) + + execSync('gm convert -list formats', { encoding: 'utf8', stdio: 'inherit' }) + + execSync('gm convert -list fonts', { encoding: 'utf8', stdio: 'inherit' }) + + execSync('gm convert -font Courier -fill white -draw "rotate 20 text 10,10 Hello-World" image1.jpg /tmp/gm-test-output.jpg', { encoding: 'utf8', stdio: 'inherit' }) +} diff --git a/test/main.py b/amazon-linux-2/test/main.py similarity index 100% rename from test/main.py rename to amazon-linux-2/test/main.py diff --git a/amazon-linux/Dockerfile b/amazon-linux/Dockerfile new file mode 100644 index 0000000..50bdd55 --- /dev/null +++ b/amazon-linux/Dockerfile @@ -0,0 +1,60 @@ +FROM amazonlinux:1 + +RUN yum update -y + +RUN yum install -y \ + make \ + gcc \ + zip \ + tar \ + gzip \ + file \ + lcms2 \ + libSM \ + libXext \ + freetype \ + findutils \ + bzip2-devel \ + libpng-devel \ + libjpeg-devel \ + libtiff-devel \ + libuuid-devel \ + freetype-devel \ + liblcms2-devel + +RUN curl -O http://mirror.centos.org/altarch/7/os/aarch64/Packages/urw-fonts-2.4-16.el7.noarch.rpm && \ + rpm -ivh --nodeps urw-fonts-2.4-16.el7.noarch.rpm + +ARG GM_VERSION + +RUN curl -O -L https://versaweb.dl.sourceforge.net/project/graphicsmagick/graphicsmagick/${GM_VERSION}/GraphicsMagick-${GM_VERSION}.tar.gz && \ + tar -xvf GraphicsMagick-${GM_VERSION}.tar.gz && \ + cd GraphicsMagick-${GM_VERSION} && \ + ./configure --prefix=/opt --enable-shared=no --enable-static=yes --with-gs-font-dir=/opt/share/fonts/default/Type1 && \ + make && \ + make install + +RUN cp /usr/lib64/liblcms2.so* /opt/lib && \ + cp /usr/lib64/libtiff.so* /opt/lib && \ + cp /usr/lib64/libfreetype.so* /opt/lib && \ + cp /usr/lib64/libjpeg.so* /opt/lib && \ + cp /usr/lib64/libpng*.so* /opt/lib && \ + cp /usr/lib64/libXext.so* /opt/lib && \ + cp /usr/lib64/libSM.so* /opt/lib && \ + cp /usr/lib64/libICE.so* /opt/lib && \ + cp /usr/lib64/libX11.so* /opt/lib && \ + cp /usr/lib64/liblzma.so* /opt/lib && \ + cp /usr/lib64/libxml2.so* /opt/lib && \ + cp /usr/lib64/libgomp.so* /opt/lib && \ + cp /usr/lib64/libjbig.so* /opt/lib && \ + cp /usr/lib64/libxcb.so* /opt/lib && \ + cp /usr/lib64/libXau.so* /opt/lib && \ + cp /usr/lib64/libuuid.so /opt/lib/libuuid.so.1 && \ + cp /usr/lib64/libbz2.so /opt/lib/libbz2.so.1 + +RUN mkdir -p /opt/share/fonts/default && \ + cp -R /usr/share/fonts/default/Type1 /opt/share/fonts/default/Type1 + +RUN cd /opt && \ + find . ! -perm -o=r -exec chmod +400 {} \; && \ + zip -yr /tmp/gm-${GM_VERSION}.zip ./* diff --git a/amazon-linux/build.sh b/amazon-linux/build.sh new file mode 100755 index 0000000..973f7ea --- /dev/null +++ b/amazon-linux/build.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +export GM_VERSION=1.3.35 + +docker build --build-arg GM_VERSION -t gm-lambda-layer . +docker run --rm gm-lambda-layer cat /tmp/gm-${GM_VERSION}.zip > ./layer.zip diff --git a/publish.sh b/amazon-linux/publish.sh similarity index 73% rename from publish.sh rename to amazon-linux/publish.sh index 985c8f3..5c0ca29 100755 --- a/publish.sh +++ b/amazon-linux/publish.sh @@ -1,7 +1,7 @@ #!/bin/bash -GM_VERSION=1.3.31 -LAYER_NAME='graphicsmagick' +GM_VERSION=1.3.35 +LAYER_NAME='graphicsmagick-amzn' REGIONS=' ap-northeast-1 @@ -28,5 +28,5 @@ for region in $REGIONS; do aws lambda add-layer-version-permission --region $region --layer-name $LAYER_NAME \ --statement-id sid1 --action lambda:GetLayerVersion --principal '*' \ --version-number $(aws lambda publish-layer-version --region $region --layer-name $LAYER_NAME --zip-file fileb://layer.zip \ - --description "GraphicsMagick ${GM_VERSION} binaries" --query Version --output text --profile $PROFILE) --profile $PROFILE + --description "GraphicsMagick ${GM_VERSION} binaries for AmazonLinux" --query Version --output text --profile $PROFILE) --profile $PROFILE done diff --git a/test.sh b/amazon-linux/test.sh similarity index 100% rename from test.sh rename to amazon-linux/test.sh diff --git a/amazon-linux/test/image1.jpg b/amazon-linux/test/image1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0c33bccea222771ad194546e481c87fab767a73c GIT binary patch literal 37671 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 Zj`P2c4hTTX&@9gz_<1rOJ^<3ip literal 0 HcmV?d00001 diff --git a/test/index.js b/amazon-linux/test/index.js similarity index 100% rename from test/index.js rename to amazon-linux/test/index.js diff --git a/amazon-linux/test/main.py b/amazon-linux/test/main.py new file mode 100644 index 0000000..4dbd1b4 --- /dev/null +++ b/amazon-linux/test/main.py @@ -0,0 +1,7 @@ +import os + +def handler (event, context): + os.system("gm version") + os.system("gm convert -list formats") + os.system("gm convert -list fonts") + return os.system('gm convert -font Courier -fill white -draw "rotate 20 text 10,10 Hello-World" image1.jpg /tmp/gm-test-output.jpg')