Amazon web services 使用SAM cli和AWS CDK在本地调试时未找到AWS lambda模块错误?
我正在尝试使用SAM cli和AWS CDK在本地调试lambda函数。所以我得到的错误功能模块没有找到任何想法,为什么呢?我从github获得了这个项目 function.js: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
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”。。。