gpt4 book ai didi

node.js - AWS lambda找不到lambda层路径

转载 作者:行者123 更新时间:2023-12-03 07:22:13 24 4
gpt4 key购买 nike

我在使用 lambda 设置 lambda 层时遇到了困难。我正在使用 Node 14

我的 lambda 层文件夹结构

   layer/ 
nodejs/
node14/
node_modules/
hey.js

我也尝试过只拥有如下的nodejs目录

layer/
nodejs/
hey.js

但是在这两种情况下,我都会在 lambda 中遇到“找不到模块”错误。

我尝试访问 lambda 中的层的路径如下

'/opt/nodejs/node14/node_modules/hey.js' (for first folder structure)
'/opt/nodejs/hey.js' (for folder structure with only the nodejs directory in the layer)
'hey.js' (trying to access the file directly)

但我没有运气。我做错了什么?

我正在使用 AWS sam 部署 lambda 和层。我可以看到该层已附加到控制台上的 lambda。

这是我的 SAM 模板

    layer1:
Type: AWS::Serverless::LayerVersion
Properties:
ContentUri: ./src/lambda-layers/layer1
CompatibleRuntimes:
- nodejs14.x
Metadata:
BuildMethod: nodejs14.x

lambda1:
Type: 'AWS::Serverless::Function'
Properties:
CodeUri: ./src/lambdas/lambda1
Handler: index.handler
Role: !GetAtt LambdaExecutionRole.Arn
Layers:
- !Ref layer1
Events:
AwsIoTMetadata:
Type: Api
Properties:
RestApiId: !Ref CrApi
Path: /user
Method: GET

如何访问lambda中的层?

请帮忙。提前致谢

最佳答案

首先,在 lambda 中,按如下方式访问层:

const MyLayer = require("mylayer"); // Where the package name is your layer's package name as set in your package.json

层代码示例:

class MyLayer {    }
module.exports = MyLayer;

图层文件夹结构:

mylayer/nodejs/node_modules/mylayer/
// Inside should be your package.json, package-lock.json and your code file

云信息模板:

MyLayer:
Type: AWS::Serverless::LayerVersion
Properties:
ContentUri: ./mylayer
CompatibleRuntimes:
- nodejs
LicenseInfo: MIT
RetentionPolicy: Retain

还要确保您的 Lambda 也是 nodejs14

关于node.js - AWS lambda找不到lambda层路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74625556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com