Amazon web services 使用SAM cli和AWS CDK在本地调试时未找到AWS lambda模块错误?

Amazon web services 使用SAM cli和AWS CDK在本地调试时未找到AWS lambda模块错误?,amazon-web-services,aws-lambda,aws-cdk,aws-serverless,Amazon Web Services,Aws Lambda,Aws Cdk,Aws Serverless,我正在尝试使用SAM cli和AWS CDK在本地调试lambda函数。所以我得到的错误功能模块没有找到任何想法,为什么呢?我从github获得了这个项目 function.js: exports.handler = async function (event) { console.log("request:", JSON.stringify(event)); // return response back to upstream caller return s

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

function.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>template.yaml命令生成cloud formation template.yaml文件。现在我找到了带有logicalID的函数名,例如:myFunction12345678,然后尝试使用命令sam local invoke myFunction12345678在我的例子中是DynamoLambdaHandler函数在本地调试它。我发现功能模块未找到错误。知道我错过了什么吗

代码在github上可用:

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

您有两个选择:

使用定义的卷mount sam local invoke-v cdk.out运行sam命令 从cdk.out目录中运行该命令,并将JSON模板作为参数传递,因为cdk编写了一个JSON模板:sam local invoke-t 我建议使用后者,因为您是在CDK创建的框架内工作,而不是创建其他文件。

问题是sam运行一个Docker容器,其中包含来自当前目录的卷装载。因此,它找不到Lambda代码,因为CDK创建的CloudFormation模板中的代码路径不包括CDK创建资产的CDK.out目录

您有两个选择:

使用定义的卷mount sam local invoke-v cdk.out运行sam命令 从cdk.out目录中运行该命令,并将JSON模板作为参数传递,因为cdk编写了一个JSON模板:sam local invoke-t
我推荐后者,因为您在CDK创建的框架内工作,而不创建其他文件。

但是为什么sam local调用myLanbdaFunction不起作用?我引用了这个我是geenrating template.yaml文件,然后调用应该正常工作的函数?有几个原因:1 myFunction不是CloudFormation模板中资源的名称2,原因是我在回答中提供的-它不应该工作。CDK和SAM是两个独立的项目,由AWS内的独立团队维护。事实上,你可以让他们一起工作并不意味着这应该是预期的。我仍然得到相同的错误,而使用第二个选项。errorType:Runtime.ImportModuleError,errorMessage:Error:找不到模块“chrome aws lambda”…但是为什么sam本地调用myLanbdaFunction不工作?我引用了这个我是geenrating template.yaml文件,然后调用应该正常工作的函数?有几个原因:1 myFunction不是CloudFormation模板中资源的名称2,原因是我在回答中提供的-它不应该工作。CDK和SAM是两个独立的项目,由AWS内的独立团队维护。事实上,你可以让他们一起工作并不意味着这应该是预期的。我仍然得到相同的错误,而使用第二个选项。errorType:Runtime.ImportModuleError,errorMessage:Error:找不到模块“chrome aws lambda”。。。