使用层时导入模块在 AWS Lambda 中不起作用

编程入门 行业动态 更新时间:2024-10-04 21:18:22

使用层时导入模块在 AWS Lambda <a href=https://www.elefans.com/category/jswz/34/1771233.html style=中不起作用"/>

使用层时导入模块在 AWS Lambda 中不起作用

我正在尝试向我的 lambda 函数添加一个层,我可以在其中包含来自 NPM 的模块。我将这个模块用于几个 lambda 函数,并读到层是重用代码的好方法。

我正在使用节点 18.x,因此,需要“导入”模块,一旦我创建并添加了层,该模块就应该可用。

import { CognitoJwtVerifier } from "aws-jwt-verify"

当我测试函数时,错误消息指出它找不到包。 process.env.NODE_Path 显示:/opt/nodejs/node18/node_modules:/opt/nodejs/node_modules:/var/runtime/node_modules:/var/runtime:/var/task。我之前通过上传包含该包的 .zip 存档将此包包含在我的 lambda 函数中,并且它之前一直有效。

虽然我可能没有正确创建图层,但我按照明确的说明进行操作并且不认为这是问题所在。

我遇到过几个“解决方案”,包括使用符号链接,但其中大部分似乎是针对旧版本的 Node,在尝试使用 ES6 时效果不佳。就此而言,AWS 建议在使用节点 18.x 时解决路径问题。请参阅/

有什么我可能遗漏的常见问题吗?

回答如下:

开始工作了。这是对我有用的问题和解决方案:

当您将 Layer 添加到 Lambda 时(我使用的是控制台),您可以选择指定兼容的运行时。我使用的是 Node 18.x,所以我指定了运行时,但该函数永远找不到我通过层添加的模块。

我检查了 PATH(如我上面的原始问题所述)并注意到除了常规路径(即 opt/nodejs/node_modules)之外,它还显示了 /opt/nodejs/node18/node_modules 的运行时特定路径(我加粗体以突出差异)。

然后我使用与之前相同的过程使用更改后的目录结构(即 nodejs/node18/node_modules)从头开始重新创建模块并上传该层。然后一切都很完美。

更多推荐

使用层时导入模块在 AWS Lambda 中不起作用

本文发布于:2024-05-30 12:58:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770520.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:中不   模块   AWS   Lambda

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!