我正在使用 AWS Lambda,将从 Lambda 函数中读取一些文件。
可以读取文本文件,即使无法读取 png 文件。好像有点奇怪。AWS lambda 是否无法读取 PNG 文件?
我做了以下过程:
为了上传到 AWS Lambda,归档一个项目。
$ ls -1 index.js test.png test.txt $ cat index.js exports.handler = function(event, context) { var fs = require('fs'); var path = __dirname + '/test.txt'; fs.readFile(path, function(err, buffer) { console.log('err = ' + err); console.log(buffer.length); context.done(); }); } $ zip -r lambda.zip . adding: index.js (deflated 35%) adding: test.png (deflated 1%) adding: test.txt (stored 0%)
将存档文件上传到 AWS Lambda 并调用该函数。
调用结果成功。
START RequestId: 2997ce37-2628-11e5-9e15-456a1ab0c0d0 2015-07-09T10:49:24.660Z 2997ce37-2628-11e5-9e15-456a1ab0c0d0 err = null 2015-07-09T10:49:24.661Z 2997ce37-2628-11e5-9e15-456a1ab0c0d0 5 END RequestId: 2997ce37-2628-11e5-9e15-456a1ab0c0d0 REPORT RequestId: 2997ce37-2628-11e5-9e15-456a1ab0c0d0 Duration: 123.68 ms Billed Duration: 200 ms Memory Size: 128 MB Max Memory Used: 9 MB
将文件从 test.txt 读取到 test.png。
将存档文件上传到 AWS Lambda 并调用该函数。
调用的结果是失败。
START RequestId: d9d5b6ff-2627-11e5-92ff-85a0d38392ee 2015-07-09T10:47:10.689Z d9d5b6ff-2627-11e5-92ff-85a0d38392ee err = Error: EACCES, open '/var/task/resource/test.png' END RequestId: d9d5b6ff-2627-11e5-92ff-85a0d38392ee REPORT RequestId: d9d5b6ff-2627-11e5-92ff-85a0d38392ee Duration: 214.73 ms Billed Duration: 300 ms Memory Size: 128 MB Max Memory Used: 10 MB Process exited before completing request