AWS Lambda – 下载文件,并将其用于相同的function – nodejs
我有一些证书文件s3(公共),我要下载并在我的代码中使用这些文件,如果我在我的本地写nodejs的等效代码,它只是运行良好,但在AWS lambda它只是崩溃。
var apn = require('apn'); var https = require('https'); var fs = require('fs'); exports.handler = function(event, context) { console.log("Running aws apn push message function"); console.log("=================================="); console.log("event", event); var certPath = event.certPath; var keyPath = event.keyPath; var certFileName = event.certFileName; var keyFileName = event.keyFileName; var passphrase = event.passphrase; var apnId = event.apnId; var content = event.content; var certfile = fs.createWriteStream(certFileName); var certrequest = https.get(certPath, function(certresponse) { certresponse.pipe(certfile); console.log("downloaded the certificate"); var keyfile = fs.createWriteStream(keyFileName); var keyrequest = https.get(keyPath, function(keyresponse) { keyresponse.pipe(keyfile); console.log("downloaded the key file"); var options = { "cert":certFileName, "key":keyFileName, "passphrase":passphrase, "batchFeedback": true, "interval": 10 }; var apnConnection = new apn.Connection(options); var myDevice = new apn.Device(apnId); var note = new apn.Notification(); note.expiry = Math.floor(Date.now() / 1000) + 3600; // Expires 1 hour from now. note.payload = {'COMMAND': content}; apnConnection.pushNotification(note, myDevice); console.log('message sent to ' + apnId); context.done(); }); }); }
我得到的错误是相关的访问文件,我想 –
events.js:72 throw er; // Unhandled 'error' event ^ Error: EACCES, open 'PushChatCert.pem'
因此,在AWS上,Lambda在下载文件并使用文件时遇到了一些特定的问题:与文件path有关,文件保存在何处,实际上我甚至没有看到文件日志下载。
您可以在Lambda中写入的唯一可用的本地文件系统是/ tmp,因此请确保您尝试写入的本地文件的path位于/ tmp目录中,并且应该全部设置。
- 使用docker run命令将parameter passing给Dockerfile中的CMD
- 使用grunt-browserify(> 2.0.2)作为转换工具很难获得browserify-shim
- Stubbing S3在Node.js中上传
- 节点js s3fs图像上传到aws amazon s3服务器并设置ContentType
- 如何通过webapp上传一个一兆字节的文件到Amazon S3?
- 你如何使用Node.jsstream式传输MP4文件与ffmpeg?
- 我如何在节点js s3上存储一个tar目录?
- aws lambda中的简单node.js示例
- AWS Transfer Acceleration使用JavaScript SDK的预签名URL
- 使用JavaScript API设置S3对象到期(用于删除)
- 如何使用AWS SDK for Node.js将Amazon S3中的所有对象从一个前缀复制/移动到另一个前缀