LibreOffice 25.2 base image for Lambda Node.js 20/22 x86_64 and Python 3.12/3.13 x86_64 to be used as a base for your own images.
Includes CJK fonts support! 877 MB in size.
Set environment variable
HOME=/tmpin your Lambda function.
FROM public.ecr.aws/shelf/lambda-libreoffice-base:25.2-node22-x86_64 COPY handler.js ${LAMBDA_TASK_ROOT}/ CMD [ "handler.handler" ]And your handler.js:
const {execSync} = require('child_process'); const {writeFileSync} = require('fs'); module.exports.handler = () => { writeFileSync('/tmp/hello.txt', Buffer.from('Hello World!')); execSync(` cd /tmp libreoffice25.2 --headless --invisible --nodefault --view --nolockcheck --nologo --norestore --convert-to pdf --outdir /tmp ./hello.txt `); };FROM public.ecr.aws/shelf/lambda-libreoffice-base:25.2-node20-x86_64 COPY handler.js ${LAMBDA_TASK_ROOT}/ CMD [ "handler.handler" ]And your handler.js:
const {execSync} = require('child_process'); const {writeFileSync} = require('fs'); module.exports.handler = () => { writeFileSync('/tmp/hello.txt', Buffer.from('Hello World!')); execSync(` cd /tmp libreoffice25.2 --headless --invisible --nodefault --view --nolockcheck --nologo --norestore --convert-to pdf --outdir /tmp ./hello.txt `); };FROM public.ecr.aws/shelf/lambda-libreoffice-base:25.2-python3.13-x86_64 COPY handler.py ${LAMBDA_TASK_ROOT}/ CMD [ "handler.handler" ]And your handler.py:
import subprocess def handler(event, context): with open('/tmp/hello.txt', 'w') as f: f.write('Hello World!') subprocess.run([ 'libreoffice25.2', '--headless', '--invisible', '--nodefault', '--view', '--nolockcheck', '--nologo', '--norestore', '--convert-to', 'pdf', '--outdir', '/tmp', '/tmp/hello.txt' ], check=True)FROM public.ecr.aws/shelf/lambda-libreoffice-base:25.2-python3.12-x86_64 COPY handler.py ${LAMBDA_TASK_ROOT}/ CMD [ "handler.handler" ]And your handler.py:
import subprocess def handler(event, context): with open('/tmp/hello.txt', 'w') as f: f.write('Hello World!') subprocess.run([ 'libreoffice25.2', '--headless', '--invisible', '--nodefault', '--view', '--nolockcheck', '--nologo', '--norestore', '--convert-to', 'pdf', '--outdir', '/tmp', '/tmp/hello.txt' ], check=True)Command failed: Fatal Error: The application cannot be started. User installation could not be completed.
Set environment variable HOME=/tmp in your Lambda function.
25.2-node22-x86_64- Node.js 22 with LibreOffice 25.2.525.2-node20-x86_64- Node.js 20 with LibreOffice 25.2.525.2-python3.13-x86_64- Python 3.13 with LibreOffice 25.2.525.2-python3.12-x86_64- Python 3.12 with LibreOffice 25.2.5
7.6-node20-x86_64- Node.js 20 with LibreOffice 7.67.6-python3.12-x86_64- Python 3.12 with LibreOffice 7.67.6-node18-x86_64- Node.js 18 with LibreOffice 7.67.4-node16-x86_64- Node.js 16 with LibreOffice 7.47.3-node16-x86_64- Node.js 16 with LibreOffice 7.3
- aws-lambda-libreoffice - utility to work with Docker version of LibreOffice in Lambda
- libreoffica-lambda-layer - deprecated; this is the predecessor of this image