AWS Lambda 扩展抛出退出状态 127(/usr/bin/env: 节点:没有此类文件或目录)



我正在创建一个 Lambda 扩展,以使用作为模板从密钥管理器获取密钥值: https://github.com/hariohmprasath/aws-lambda-extensions

我已将文件压缩为以下结构。

extension.zip
--> extensions
--> secret-extension
--> secret-extension
--> node_modules
--> extensions-api.js
--> index.js
--> package.json
--> package-lock.json
--> secrets.js

错误:

{
"errorMessage": "RequestId: e5c06575-cf7d-46c0-b168-624e8e9cf572 Error: exit status 127",
"errorType": "Extension.Crash"
}

错误是/usr/bin/env: 节点:没有这样的文件或目录 在索引的顶部.js文件是命令#!/usr/bin/env节点(为了解释node中的文件)

运行时环境是 Nodejs 12,并且也尝试过使用 14。(扩展文档说需要节点 12 运行时)

可能导致此问题的原因是什么?

  • lambda 运行时是节点运行时,因此应安装节点。
  • 我已经ls文件夹并且/env文件夹存在。
  • 我知道运行时中存在节点,因为node -v返回 v14.20.0 或 v12.22.11
  • 我在一台窗户机器上 创建扩展(不要认为部署可能导致 这是因为它是在Windows机器上编写的。

任何帮助将不胜感激。

因此发现这与他们用于AWS提供的示例的自定义环境有关。相反,我选择了使用运行时独立解决方案的路线,该解决方案按预期工作。

文档

我怀疑您可能遇到的问题与我的相同,该问题是:#!/usr/bin/env node在行尾rn了空格字符,除非您让编辑器显示这些字符,否则显然看不到这些字符,这就是 Windows 处理新行的方式(*nix 系统仅使用n);现在,当 lambda 读取该行时,它试图将其解释为显然不存在的#!/usr/bin/env noder,并且无法通过node运行文件。

日志的问题在于,当您查看日志时,它不会将r呈现为那样,它可以执行以下 2 件事中的 1 件事,具体取决于您查看日志的位置:

  1. 它将r解释为换行符,从而只打印空格,这在日志消息中并不明显;或者可能发生的其他情况(这就是发生在我身上的情况):
  2. 它只显示: No such file or directory,因为它将r解释为回车符,这意味着它将cursor带到行的开头,并在打印新字符时覆盖,

我很有信心这是你的问题,我承认我没有自己 100% 解决这个问题,因为我团队中的一个人在空白字符方面遇到了类似的问题,只有在分配头部撞击之后我才想到它,并确认使用hexdump -C来确认问题。

相关内容

  • 没有找到相关文章

最新更新