Amazon web services 使用无服务器框架时,如何在aws lambda函数中打包可执行文件?

Amazon web services 使用无服务器框架时,如何在aws lambda函数中打包可执行文件?,amazon-web-services,aws-lambda,wkhtmltopdf,serverless-framework,serverless,Amazon Web Services,Aws Lambda,Wkhtmltopdf,Serverless Framework,Serverless,我需要上传一个可执行文件(确切地说是wkhtmltopdf)以及aws lambda中的函数代码。我使用的是无服务器框架。我尝试了不同的方法,但exe没有上传。当代码通过aws仪表板压缩和上传时,该功能运行良好 下面给出了需要上传的函数的目录结构 节点单元 index.js wkhtmltopdf 这是我的无服务器.yml 服务:咨询支付api 框架版本:“>=1.1.0我可以建议使用Python,因为这是我最近在项目中实现的。我将所有lambda脚本和依赖性python脚本放在一个zip中,

我需要上传一个可执行文件(确切地说是wkhtmltopdf)以及aws lambda中的函数代码。我使用的是无服务器框架。我尝试了不同的方法,但exe没有上传。当代码通过aws仪表板压缩和上传时,该功能运行良好

下面给出了需要上传的函数的目录结构

节点单元 index.js wkhtmltopdf

这是我的无服务器.yml

服务:咨询支付api

框架版本:“>=1.1.0我可以建议使用Python,因为这是我最近在项目中实现的。我将所有lambda脚本和依赖性python脚本放在一个zip中,并将它们放在我的bastion服务器上。为了使这些更易于执行和上传,我已经实现了Bown+click cli,它确保提取正确版本的拉链,然后将拉链上传到s3 bucket位置。当lambda基于s3事件触发时,它会在存储库中查找所需的参数文件或输入文件(它只不过是一个s3 bucket)。

我确实得到了一个可用的版本

以下是我所做的:

1) 创建package.json并添加:

“依赖项”:{
“wkhtmltopdf”:“^0.3.4”,
“memorystream”:“^0.3.1”
},

2) 已运行ndm安装

3) 在目录中添加了WKhtmltopdf:

4) 在serverless.yml中添加了此项
套餐:
包括:
-wkhtmltopdf

5) 在lambda中添加此项:
var wkhtmltopdf=require('wkhtmltopdf')
var MemoryStream=require('MemoryStream')



就这样。希望有帮助。

您使用的是什么操作系统?lambda zip文件中包含的所有内容都部署在lambda执行中的/var/task中。通过这种方式,您可以在zip中添加二进制文件,并在调用路径/var/task/的代码中检索它。记住,二进制文件应该使用静态选项编译,以避免因依赖关系而导致的错误;只需将它们打包到上载的ZIP文件中,然后在从Node.js或之前启动的其他进程调用它们时引用它们(包括创建的ZIP文件中的相对路径)。确保在函数代码的开头包含以下内容:process.env['PATH']=process.env['PATH']+':'+process.env['LAMBDA_TASK_ROOT']@Erndob LAMBDA使用Amazon Linux我想谢谢你的建议。但是这些并不能帮助我在无服务器框架上工作。谢谢你的建议。我需要的是使用无服务器框架使其工作。当我从aws Dashboard手动上传函数和exe时,效果很好。我对AWS资源的Javascript支持知之甚少,但对于Python来说,Boto3确实是一个很棒的SDK,它在自动化任务方面帮助了我很多。如果考虑其他选择,你也可以试试。谢谢。我会看看的,谢谢你的回复。这对你有用吗@JonesieYes,我正在用它。它工作得很好。我唯一的问题(我还没有解决)是这个特定的serverless.yml中的所有lambda都包括wkhtmlpdf,所以它们都大约有16MB。好的。我试试这个@琼斯