让 LibreOffice已卸载,仅限文件在 AWS Lambda 上运行

问题描述

我快到了,但卡在了最后一个障碍。

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

^ 这适用于我的本地机器(Docker 容器)和(部署在)AWS Lambda 上的容器

然而,

    $ /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

... 失败:

LibreOffice - 对话框“LibreOfficeDev 6.4 - 致命错误”:“应用程序无法启动。 无法完成用户安装。 'LibreOfficeDev 6.4 - 致命错误:应用程序无法启动。 无法完成用户安装。

在谷歌上搜索,一切都指向 ~/.config/libreoffice

的权限问题

Lambda 运行时的文件权限有些奇怪。 也许它正在尝试读取或写入它无权访问的位置。

有什么办法让它工作吗?

解决方法

问题是lambda只能写在/tmp上,但是默认的HOME不是/tmp

添加

export HOME=/tmp

在调用 /path/to/soffice.bin 之前

应该可以解决问题。

另外,请注意,由于未知问题,第一次运行会产生可预测的错误。所以你应该处理重试。