最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

网站源码admin57浏览0评论

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

使用层时导入模块在 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)从头开始重新创建模块并上传该层。然后一切都很完美。

发布评论

评论列表(0)

  1. 暂无评论