当前位置: 首页 > 知识库问答 >
问题:

AWS lambda模块在使用SAM cli和AWS CDK进行本地调试时未发现错误?

颛孙钱青
2023-03-14

我正在尝试使用SAM cli和AWS CDK在本地调试lambda函数。所以我得到的错误功能模块没有找到任何想法,为什么呢?我从github获得了这个项目https://github.com/mavi888/cdk-serverless-get-started

作用js:

exports.handler = async function (event) {
  console.log("request:", JSON.stringify(event));

  // return response back to upstream caller
  return sendRes(200, "HELLLOOO");
};

const sendRes = (status, body) => {
  var response = {
    statusCode: status,
    headers: {
      "Content-Type": "text/html",
    },
    body: body,
  };
  return response;
};

内部库文件夹

// lambda function
    const dynamoLambda = new lambda.Function(this, "DynamoLambdaHandler", {
      runtime: lambda.Runtime.NODEJS_12_X,
      code: lambda.Code.asset("functions"),
      handler: "function.handler",
      environment: {
        HELLO_TABLE_NAME: table.tableName,
      },
    });

我正在使用cdk synth

代码在github上可用:https://github.com/mavi888/cdk-serverless-get-started


共有1个答案

廖令
2023-03-14

问题在于sam运行一个Docker容器,该容器从当前目录装载卷。因此,它没有找到Lambda代码,因为CDK创建的CloudFormation模板中的代码路径不包括CDK。out目录,在该目录中cdk创建资产。

您有两个选择:

  1. 使用定义的卷装载sam local invoke-v cdk运行sam命令。输出
  2. cdk中运行该命令。退出目录并将JSON模板作为参数传递,因为cdk写入JSON模板:sam local invoke-t

推荐后者,因为您是在CDK创建的框架内工作,而不是创建额外的文件。

 类似资料:
  • 我刚开始使用SAM使用AWS serverless,遇到以下问题: SAM调用似乎找不到我的lambda处理程序正在导入的python模块,但我可以导入该模块。 我的项目结构如下: 根目录/ mymodulename/ mymodule.py sam/ test_event.json 我在python3.6虚拟环境中工作,并使用安装工具安装了python包(mymodulename): 因此,如果

  • 问题内容: 我正在尝试使用Swift 2的新声明将我的类暴露给测试目标。但是我收到此编译器错误: 是包含我要公开的类的模块。如何摆脱这个错误? 问题答案: 在主要目标中,您需要将构建选项设置为“是”。 根据下面@earnshavian的评论,应仅根据苹果发行说明在调试版本中使用此选项:“启用可测试性版本设置应仅在Debug配置中使用,因为它禁止不依赖于不从内部导出内部符号的优化应用或框架” htt

  • 问题内容: 我使用的是大猩猩网络套接字,我想在本地运行它,是指使用以下chrome客户端或其他推荐的工具……当我进入调试模式时,出现错误 我用 当我在Chrome或网络套接字客户端中运行以下网址时,出现错误 websocket:不是websocket握手:在“连接”标头中找不到“升级”令牌 我想运行它 并为本地模拟提供令牌,我该怎么做? 要检查它,我使用Chrome的Simple WebSocke

  • 问题内容: 我知道这个问题已经被问过很多次了,而且我知道在大多数情况下人们会丢失文件。 我遇到了同样的问题,试图在模块上测试工厂。不幸的是,我一直遇到测试方面的问题(为什么要使用Angular,为什么要假设和对象?),未定义模块的状态。我很茫然。我也尝试过使用angular.mocks.module,但随后收到一条消息,提示未定义Angular。我究竟做错了什么? 值得注意的是,我正在使用gulp

  • 问题内容: 我有一条路线如下: 我正在尝试对Giant Bomb API进行API调用,以获取有关魔兽世界的所有数据。 问题是,路线刚刚加载;它什么也没做,也没有超时,只是连续加载。 我不知道我在做什么错,但是话虽这么说……我也不知道什么是对的。我在努力学习。 任何帮助都会很棒。 谢谢 问题答案: 您需要获取从中获取的数据,并将其作为对原始Web服务器请求的响应发送回去。因为您从未发送任何对原始请

  • lipse插件尝试“本地”运行一个新的Web应用程序(从Eclipse内部,使用内置的Jetty容器)。我正在遵循本GWT教程中的说明,并遇到了一些问题,大概是因为我如何定义模块。 我有一个具有以下目录结构的Web应用程序项目: 我希望我的应用程序有两个模块:,即“公共网站”,以及当用户进入时加载的模块,然后还有,仅在用户登录后下载,并包含站点的“私有应用程序”功能。 : : : -ddatast