Search code examples
aws-lambdadockerfilelibreoffice

Getting LibreOffice (uninstalled, files only) to work on AWS Lambda


I'm nearly there, but stuck at the last hurdle.

$ /path/to/soffice.bin --version

^ This works both on my local machine (Docker Container) and on (container deployed on) AWS Lambda

However,

    $ /path/to/soffice.bin \
        --headless --invisible --nodefault --nofirststartwizard --nolockcheck --nologo --norestore --nosplash \
        --convert-to pdf:writer_pdf_Export \
        --outdir /tmp \
        $filename \
            2>&1 || true  # avoid exit-on-fail

... fails with:

LibreOffice - dialog 'LibreOfficeDev 6.4 - Fatal Error': 'The application cannot be started. User installation could not be completed. 'LibreOfficeDev 6.4 - Fatal Error: The application cannot be started. User installation could not be completed.

Searching on google, everything is pointing towards a permissions issue with ~/.config/libreoffice

And there is something strange going on with file permissions on the Lambda runtime. Maybe it is attempting to read or write to a location to which it doesn't have access.

Is there any way to get it working?


Solution

  • The problem is that lambda can only write on /tmp, but the default HOME is not /tmp

    adding

    export HOME=/tmp
    

    before calling /path/to/soffice.bin

    should do the trick.

    Also, note that the first run will produce a predictable error because of unknown issues. So you should handle the retry.

    (Translated using Hero Translate)