{"id":18461378,"url":"https://github.com/ph200/sharp-layer","last_synced_at":"2025-10-29T20:31:11.845Z","repository":{"id":152507644,"uuid":"626171999","full_name":"pH200/sharp-layer","owner":"pH200","description":"npm sharp for AWS Lambda layers, separated builds for arm64 and x64, minified and bundled with esbuild","archived":false,"fork":false,"pushed_at":"2024-08-17T04:07:03.000Z","size":19,"stargazers_count":68,"open_issues_count":2,"forks_count":26,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-07T03:07:51.735Z","etag":null,"topics":["aws","aws-lambda","aws-lambda-layer","github-actions","nodejs","npm","sharp","sst"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pH200.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-11T00:15:09.000Z","updated_at":"2025-02-06T15:11:58.000Z","dependencies_parsed_at":"2023-12-02T08:21:32.902Z","dependency_job_id":"4be08afa-126b-4e0f-b140-5beb063415c0","html_url":"https://github.com/pH200/sharp-layer","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pH200%2Fsharp-layer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pH200%2Fsharp-layer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pH200%2Fsharp-layer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pH200%2Fsharp-layer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pH200","download_url":"https://codeload.github.com/pH200/sharp-layer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238887436,"owners_count":19547255,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","aws-lambda","aws-lambda-layer","github-actions","nodejs","npm","sharp","sst"],"created_at":"2024-11-06T08:35:06.843Z","updated_at":"2025-10-29T20:31:11.561Z","avatar_url":"https://github.com/pH200.png","language":"JavaScript","readme":"# sharp for AWS Lambda Layers\n\n[![GitHub release](https://img.shields.io/github/tag/pH200/sharp-layer.svg)](https://github.com/pH200/sharp-layer/tags)\n[![Build action](https://github.com/pH200/sharp-layer/actions/workflows/build.yml/badge.svg)](https://github.com/pH200/sharp-layer/actions/workflows/build.yml)\n\n## About\n\nThe prebuilt [sharp](https://www.npmjs.com/package/sharp) node module for AWS Lambda layer.\n\n### Features\n\n- Built and tested automatically using GitHub Actions\n- Automatically releases [sharp](https://www.npmjs.com/package/sharp) updates with GitHub Actions\n- Separated builds for `arm64` and `x64`\n- Minified and bundled with `esbuild`\n- Minimum `6.98 MB` zip file to optimize cold start time\n\n### Why use a bundled Lambda function? / Why separate build for arm64?\n\nPlease check out [Optimizing Node.js dependencies in AWS Lambda](https://aws.amazon.com/blogs/compute/optimizing-node-js-dependencies-in-aws-lambda/) for details. A bundled and minified lambda function can be up to 70% faster for cold starts. The package size is also crucial for cold start performance.\n\n## Download\n\n[**Releases**](https://github.com/pH200/sharp-layer/releases)\n\nDownload latest [release-arm64.zip](https://github.com/pH200/sharp-layer/releases/latest/download/release-arm64.zip) or [release-x64.zip](https://github.com/pH200/sharp-layer/releases/latest/download/release-x64.zip)\n\n## Usage\n\n```js\nimport sharp from 'sharp'\n```\n\nCheck out [aws: Creating and sharing Lambda layers](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) for more details.\n\nThis package can be used with [sst](https://sst.dev). Check out [docs.sst.dev: Lambda Layers](https://docs.sst.dev/advanced/lambda-layers) and [sst.dev: Resize Images](https://sst.dev/examples/how-to-automatically-resize-images-with-serverless.html) for examples.\n\n### Setting arm64 for sst functions\n\n```js\nfunction: {\n  handler: '{handler}',\n  runtime: 'nodejs18.x',\n  architecture: 'arm_64',\n  nodejs: {\n    esbuild: {\n      external: ['sharp'],\n    },\n  },\n  layers: [\n    new lambda.LayerVersion(stack, 'SharpLayer', {\n      code: lambda.Code.fromAsset('layers/sharp'),\n      compatibleArchitectures: [\n        lambda.Architecture.ARM_64\n      ]\n    }),\n  ]\n}\n```\n\n### Setting up a lambda layer for AWS SAM\n\nProviding **a zip file** locally actually works, even though it's **not** mentioned in the documentation.\n\n```yml\n  ## Lambda\n  ImageFunction:\n    Type: AWS::Serverless::Function\n    Properties:\n      CodeUri: image-lambda/\n      Handler: app.handler\n      Runtime: nodejs18.x\n      Architectures:\n        - arm64\n      Timeout: 30\n      MemorySize: 1024\n      Layers:\n        - !Ref SharpLayer\n    Metadata:\n      BuildMethod: esbuild\n      BuildProperties:\n        # Check these two issues for problems related to esm and esbuild\n        # https://github.com/evanw/esbuild/issues/1921\n        # https://github.com/evanw/esbuild/pull/2067#issuecomment-1503688128\n        # Switch to cjs when esm doesn't work\n        Format: esm\n        OutExtension:\n          - .js=.mjs\n        EntryPoints:\n          - app.ts\n        External:\n          - '@aws-sdk/*' # @aws-sdk 3.x is installed globally for nodejs18.x\n          - sharp # use layer\n  ## Lambda layer\n  SharpLayer:\n    Type: AWS::Serverless::LayerVersion\n    Properties:\n      LayerName: sharp\n      ContentUri: layers/sharp/release-arm64.zip # zip\n      CompatibleArchitectures:\n        - arm64\n      CompatibleRuntimes:\n        - nodejs18.x\n        - nodejs16.x\n```\n\n## Build\n\nFork this repo -\u003e Actions -\u003e Run build.yml\n\n## References\n\n[Umkus/lambda-layer-sharp](https://github.com/Umkus/lambda-layer-sharp) - another maintained sharp lambda layer\n\n[aws: Creating and sharing Lambda layers](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html)\n\n[aws: Working with layers](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-layers.html)\n\n[aws: Building layers](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/building-layers.html)\n\n[sharp: Installation - AWS Lambda](https://sharp.pixelplumbing.com/install#aws-lambda)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fph200%2Fsharp-layer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fph200%2Fsharp-layer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fph200%2Fsharp-layer/lists"}