使用 SAM cli 和 AWS CDK 在本地调试时未发现 AWS lambda 模块错误?
AWS lambda module not found error when debugging locally using SAM cli and AWS CDK?
我正在尝试使用 SAM cli 和 AWS CDK 在本地调试 lambda 函数。所以我收到错误功能模块未找到任何想法为什么会这样?我从 github https://github.com/mavi888/cdk-serverless-get-started
中获取了这个项目
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;
};
lib 文件夹内
// 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,
},
});
我正在使用生成云形成 template.yaml 文件的 cdk synth > template.yaml
命令。现在我找到带有 logicalID 的函数名称,例如:myFunction12345678,然后尝试使用此命令 sam local invoke myFunction12345678
在本地调试它,在我的例子中它是 DynamoLambdaHandler 函数。我收到功能模块未找到错误。知道我错过了什么吗?
代码可用于 github:https://github.com/mavi888/cdk-serverless-get-started
问题是 sam
运行一个 Docker 容器,并从当前目录安装卷。因此,它没有找到 Lambda 代码,因为 CDK 创建的 CloudFormation 模板中的代码路径不包括 cdk
创建资产的 cdk.out
目录。
您有两个选择:
- 运行 您的
sam
命令带有定义的卷装载 sam local invoke -v cdk.out
- 运行 来自
cdk.out
目录的命令并将 JSON 模板作为参数传递,因为 cdk
写入了 JSON 模板:sam local invoke -t <StackNameTemplate.json>
我推荐后者,因为您是在 CDK 创建的框架内工作,而不是创建额外的文件。
我正在尝试使用 SAM cli 和 AWS CDK 在本地调试 lambda 函数。所以我收到错误功能模块未找到任何想法为什么会这样?我从 github https://github.com/mavi888/cdk-serverless-get-started
中获取了这个项目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;
};
lib 文件夹内
// 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,
},
});
我正在使用生成云形成 template.yaml 文件的 cdk synth > template.yaml
命令。现在我找到带有 logicalID 的函数名称,例如:myFunction12345678,然后尝试使用此命令 sam local invoke myFunction12345678
在本地调试它,在我的例子中它是 DynamoLambdaHandler 函数。我收到功能模块未找到错误。知道我错过了什么吗?
代码可用于 github:https://github.com/mavi888/cdk-serverless-get-started
问题是 sam
运行一个 Docker 容器,并从当前目录安装卷。因此,它没有找到 Lambda 代码,因为 CDK 创建的 CloudFormation 模板中的代码路径不包括 cdk
创建资产的 cdk.out
目录。
您有两个选择:
- 运行 您的
sam
命令带有定义的卷装载sam local invoke -v cdk.out
- 运行 来自
cdk.out
目录的命令并将 JSON 模板作为参数传递,因为cdk
写入了 JSON 模板:sam local invoke -t <StackNameTemplate.json>
我推荐后者,因为您是在 CDK 创建的框架内工作,而不是创建额外的文件。