AWS Lambda fs.readfile问题

时间:2019-02-28 20:37:59

标签: javascript file aws-lambda

我正在将一些文件打包在我需要的lambda包中。我使用了一些浮动示例,以使它几乎可以正常工作。

我可以验证文件的路径了

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

注销到

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

当我尝试使用

读取文件时
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);

    }

});

我收到以下错误

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

如果我可以验证路径,那我为什么不能读取它?

任何想法?

2 个答案:

答案 0 :(得分:1)

从node.js path.resolve() API文档中复制:

  

path.resolve()方法将一系列路径或路径段解析为绝对路径。

换句话说,resolve将一串字符串连接为一个字符串,格式为绝对路径。但是,它不会检查此位置是否有文件。您可以使用fs.stat()fs.access()来验证文件的存在和访问。

答案 1 :(得分:0)

最终确认无服务器正在打包我需要的文件。

使用fs.readdir,我可以调试问题并找到Lambda包中包装过程的创建路径

/ var / task / src //证书/

希望这对以后的人有帮助!