Coder Social home page Coder Social logo

struqtur / sharp-heic-lambda-layer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zoellner/sharp-heic-lambda-layer

0.0 0.0 0.0 8.91 MB

Lambda Layer providing sharp with HEIC support

License: MIT License

JavaScript 34.74% Makefile 65.26%

sharp-heic-lambda-layer's Introduction

Sharp for AWS Lambda (with HEIC support)

AWS Lambda Layer providing sharp with HEIC (and WebP) support

Build Status

Prerequisites

Usage

Due to potential license concerns for the HEVC patent group, this repo can't be provided in the most convenient way which would be a shared lambda layer or an Application in the AWS Serverless Repo.

But you can compile and deploy this lambda layer yourself at your own risk and use it wihin your own accounts. All you need is an S3 bucket to deploy the compiled code to (replace your-s3-bucket in the code snippet below). Please see the note below regarding the build process.

It is recommended to automate this process using AWS CodeBuild. A buildspec file is provided in the repo. In that case you'll have to set the SAM_BUCKET environment variable in CodeBuild. For other environment variables see the table below. The base image that should be used is aws/codebuild/amazonlinux2-x86_64-standard:4.0.

npm run build
SAM_BUCKET=your-s3-bucket npm run deploy

The example can be deployed using the following commands

cd examples
sam build
sam deploy --guided

Lambda Layer

  • Add the lambda layer with ARN arn:aws:lambda:us-east-1:${AWS:AccountId}:layer:sharp-heic:${LAYER_VERSION} to any lambda function (replace ${LAYER_VERSION} with the appropriate version and ${AWS:AccountId} if you're not using a layer from the same account as the function). You can also import the layer ARN using !ImportValue SharpHEICLayerArn.
  • Remove sharp from the dependencies in the function code (it will otherwise conflict with the one provided through the layer)
  • See example template for a complete sample template.

Environment Variables for build

Name Required Default Value Description
SAM_BUCKET yes Name of S3 Bucket to store layer
S3_PREFIX no sharp-heic-lambda-layer Prefix within S3 Bucket to store layer
STACK_NAME no sharp-heic-lambda-layer Name of CloudFormation stack
AWS_REGION no us-east-1 AWS Region to deploy to
ORGANIZATION_ID no none ID of Organization to grant access to layer
PRINCIPAL no account Principal to grant access to layer

For details on ORGANIZATION_ID and PRINCIPAL please see the equivalent properties in the CloudFormation Docs.

The special value none for ORGANIZATION_ID is used to disable organization based access. The special value account for PRINCIPAL is used to give access to the account the layer is deployed to.

The environment variables are used to create a samconfig.toml file that configures the sam package and sam deploy commands.

Note regarding build process

Previously, some custom docker images were needed to build this layer. AWS has since published newer images which work out of the box. saml-cli version v1.33.0 is using public.ecr.aws/sam/build-nodejs14.x:latest-x86_64

Background

This repo exists as it is rather painful to compile all libraries required to get sharp to work with HEIC/HEIF files in an AWS Lambda environment. The sharp repository has several issues related to this.

Layer contents

This lambda layer contains the node module sharp. But unlike a normal installation via npm i sharp this layer does not use the prebuilt sharp and libvips binaries. This layer compiles libwebp, libde265, libheif, libvips, and sharp from source in order to provide HEIC/HEIF (and webp) functionality in an AWS Lambda environment.

Dependencies

The following table lists the release version of this repo together with the version of each dependency. Patch versions are related to the build process or documentation and have the same dependencies as the minor version.

release sharp libvips libheif libwebp libde265 nodejs
1.1.0 0.27.0 8.10.5 1.10.0 1.1.0 1.0.8 12
1.2.0 0.28.2 8.10.6 1.12.0 1.2.0 1.0.8 12
2.0.0 0.29.1 8.11.3 1.12.0 1.2.1 1.0.8 14
3.0.0 0.30.7 8.12.2 1.12.0 1.2.4 1.0.8 16

CompatibleRuntimes

  • nodejs12.x (v1.x)
  • nodejs14.x (v2.x)
  • nodejs16.x (v3.x)

Contributions

If you would like to contribute to this repository, please open an issue or submit a PR.

You can also use the Sponsor button on the right if you'd like.

Licenses

Related Resources

Visit sharp.pixelplumbing.com for complete instructions on sharp.

Code Repositories

sharp-heic-lambda-layer's People

Contributors

zoellner avatar xtrinch avatar guerrerocarlos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.