我尝试将libreoffice安装到lambda函数的docker映像中。当我在本地机器上运行它时,它工作正常,但当将映像部署到lambda函数时,它一直在说“无法从javaldx读取路径”,并且无法打开soffice。有什么解决办法吗?以下是DockerFile:
FROM public.ecr.aws/lambda/nodejs:12
RUN yum install wget tar -y
RUN yum install java-1.8.0-openjdk-devel -y
RUN mkdir "LibreOffice_7.2_Linux_x86-64_rpm"
ADD LibreOffice_*_Linux_x86-64_rpm ./LibreOffice_7.2_Linux_x86-64_rpm
RUN ls -la
RUN cd LibreOffice_*_Linux_x86-64_rpm && cd RPMS && yum -y localinstall *.rpm
RUN chmod -R 777 /opt/libreoffice7.2
ADD test.docx ./
RUN export HOME=/tmp
COPY index.js package*.json ./
RUN npm install
CMD [ "index.handler" ]
这是我的处理程序代码:
/* Amplify Params - DO NOT EDIT
ENV
REGION
STORAGE_DOCBACKENDD3C9A483_BUCKETNAME
Amplify Params - DO NOT EDIT */
const {writeFileSync, readFileSync} = require('fs');
const {execSync} = require('child_process');
const {S3} = require('aws-sdk');
const s3 = new S3(
{
params: {
Bucket: "documentgenerationb25c0536d4054b9faeafca747e3f295559-dev",
apiVersion: '2006-03-01'
}
}
);
const convertCommand = `/opt/libreoffice7.2/program/soffice --convert-to pdf test.docx --headless`;
exports.handler = async () => {
const filename = "test.docx"
const {Body: inputFileBuffer} = await s3.getObject({Key: `public/${filename}`}).promise();
writeFileSync(`/tmp/${filename}`, inputFileBuffer);
execSync(`${convertCommand} ${filename}`);
const outputFilename = `test1-brandon.pdf`;
const outputFileBuffer = readFileSync(`/tmp/${outputFilename}`);
await s3
.putObject({
Key: `public/${outputFilename}`, Body: outputFileBuffer,
ACL: 'public-read', ContentType: 'application/pdf'
})
.promise();
return `https://documentgenerationb25c0536d4054b9faeafca747e3f295559-dev.s3.amazonaws.com/public/${outputFilename}`;
};
我目前正在使用这个https://github.com/shelfio/aws-lambda-libreoffice一个lambda层,你只需要安装@Shelch/AWS-lambda-libreoffice
。所以它实际上只有4行无服务器部署的代码。
看起来这个答案警告:未能从javaldx读取路径也适用于您的情况。
您的用户没有主文件夹集,或者主文件夹不可写。我刚从直接调用libreoffice改为通过shell脚本调用它
问题内容: 我在Windows 7的python 2.7环境中安装了Scrapy,但是当我尝试使用命令提示符启动新的Scrapy项目时,显示此消息 注意: 我也有python 3.5但那没有沙皮 这个问题是不重复的这 问题答案: 请参阅官方文档。 设置环境变量 安装pywin32
=D:\Users\pjha\AppData\Roaming\npm\node\u modules\tty。js\node\u模块\ws (节点gyp重建2
我想用早期版本的JasperReports编译我的报告,所以我试图将其他版本的JasperReports添加到我的Jaspersoft Studio中:项目->属性->Jaspersoft Studio->兼容性->使用项目设置->管理JasperReports版本。 我选择从URL添加选项,然后在组合框上选择某个版本。过了一会儿,我得到了下面的错误: 我试图安装许多版本,但都失败了。 null
如果我执行docker命令,如 我得到一个错误,docker没有安装,我可以做sudo apt get install docker来安装它。如果我这样做,它会说docker是最新版本。我是否需要设置二进制文件的某种路径才能运行它? 如果我做,没有答案。
我正在使用Visual Studio Code,但我无法运行“在路径中安装代码命令”选项,因为当我键入Shift Ctrl P时,此命令不会出现。我正在使用Windows 10和最新版本的Visual Studio Code。 我尝试了许多步骤来解决我的问题,但没有成功。以下是我所做的: 重新安装了Visual Studio Code(最新版本),并检查了要添加到PATH变量的选项。不起作用。 打
我试着在这些问题中应用所有的解决方案: 在我的web.xml中,我使用了标记'res-ref-name'。 多谢!