This repo contains code used to run the online demo.
├── compile.sh <-- commands used to compile LibreOffice for Lambda
├── infra <-- terraform config to deploy example Lambda
│ ├── iam.tf
│ ├── lambda.tf
│ ├── main.tf
│ ├── s3.tf
│ └── vars.tf
└── src <-- example Lambda function node in Node.js used for website demo
├── handler.js
├── libreoffice.js
├── logic.js
├── package.json <-- put lo.tar.gz in this folder to deploy. Download it below
└── s3.js
Compiled and ready to use archive can be downloaded under Releases section.
Check out a comprehensive step-by-step tutorial from 0 to deployed function.
- Go to Lambda Execution Environment and Available Libraries page to get the latest AMI id
- Click on this link to get AMI id for your region
- Spin up a
c5.2xlarge
spot instance with ~ 100 GB of storage attached - Follow the steps in
compile.sh
file in the repo
Currently ƛ unpacks 109 MB .tar.gz to /tmp
folder which takes ~1-2 seconds on cold start.
Would be nice to create a single compressed executable to save unpack time and increase portability. I tried using Ermine packager and it works!! But unfortunately this is commercial software. Similar open-source analogue Statifier produces broken binaries.
Maybe someone has another idea how to create a single executable from a folder full of shared objects.
UPD: TODO: Check out node-packer and libsquash (no FUSE required!)
I am not a Linux or C++ expert, so for sure I missed some easy "hacks" to reduce size of compiled LibreOffice.
Mostly I just excluded from compilation as much unrelated stuff as possible. And stripped symbols from shared objects.
Here is the list of: available RPM packages and libraries available in AWS Lambda Environment, which can be helpful.
MIT © Vlad Holubiev