AWS Lambda fs.readfile issue

随声附和 提交于 2019-12-25 18:38:47

问题


I'm packing some files in my lambda package that I need. I've used some example floating around to nearly get it working.

I'm able to verify the path of a file OK

const deviceCert = path.resolve(certType + "-deviceCert.key");

which logs out to

"message": "Resolved path to TEST-deviceCert.key: /var/task/TEST-deviceCert.key"

when I attempt to read the file using

fs.readFile(deviceCert, (err, data) => {

    if (err) {

        log.error(`Verify deviceCert failure: ${err}`);
        responseBody = Helper.buildCORSResponse(502, JSON.stringify({ message: "Unable to locate file required" }));

        return callback(null, responseBody);

    }

});

I get the following error

Error: ENOENT: no such file or directory, open '/var/task/TEST-deviceCert.key'"

If I can verify the path then why cant I read it?

Any ideas??


回答1:


Copied from the node.js path.resolve() API documentation:

The path.resolve() method resolves a sequence of paths or path segments into an absolute path.

In other words, resolve concatenates a sequence of strings into one string, formatted as an absolute path. However, it does not check whether or not there is a file at this location. You can use either fs.stat() or fs.access() to verify the presence and access of the file.




回答2:


eventually confirmed that serverless was packaging the files I needed.

Using fs.readdir I was able to debug the issue and find the path that the packaging process was creating in the Lambda package

/var/task/src//Certs/

Hope this helps someone in the future!!



来源:https://stackoverflow.com/questions/54933879/aws-lambda-fs-readfile-issue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!