我正在尝试在AWS lambda上运行IronPDF的简单概念证明。该代码可以很好地部署,但是在调用IronPDF时,无法解压缩Chromium渲染我的PDF所需的二进制文件。
我正在使用无服务器+ csharp模板,并且在添加IronPDF之前调用了该函数。
我尝试手动设置安装目录,但是出现权限错误:
“ IronPdf.Installation.TempFolderPath当前设置为'/ tmp',但没有足够的用户权限进行部署。\ n请检查此目录是否存在,并为当前应用程序用户授予完全权限”
据我所知,AWS lambda用户具有“ / tmp”的完全权限,但我从未运行过.NET lambda。
编辑:我能够毫无问题地将文本文件写入/ tmp。
public static void add_question(Question question) {
Connection cnx;
try {
cnx = Connect.getConnection();
cnx.setAutoCommit(false);
String req = "insert into question(title, contenu, proposition, reponse) values(?,?,?,?)";
PreparedStatement st = cnx.prepareStatement(req);
st.setString(1, question.getTitle());
st.setString(2, question.getContenu());
for (Proposition prop : question.getListProp()) {
st.setString(3, prop.getContenu());
st.addBatch();
}
for (Correct corr : question.getReponse()) {
st.setString(4, corr.getCorrect());
st.addBatch();
}
st.executeBatch();
cnx.commit();
}
最后,我想这只是我刚接触AWS Lambda上的C#/。NET的问题。在上传到S3之前将文件写入/ tmp是一种相当常见的模式。
预先感谢您的帮助!
答案 0 :(得分:1)
我也在努力解决这个问题,我才弄清楚了。这是我所做的:
Environment.SetEnvironmentVariable("PATH", Environment.GetEnvironmentVariable("PATH") + ":" + Environment.GetEnvironmentVariable("LAMBDA_TASK_ROOT"));
添加到Lambda的构造函数中。IronPdf.Installation.TempFolderPath = @"/tmp";
我还在serverless.template中将MemorySize设置为512,将Timeout设置为180,因为我在256的内存上已达到极限。
我希望这有道理并能帮助您解决问题!