使用 Cloudwatch 进行监控和故障排除
在 AWS Lambda 中创建的函数由 Amazon CloudWatch 监控。它有助于在触发 Lambda 函数时记录对该函数发出的所有请求。
请考虑以下代码已上传到 AWS Lambda,函数名称为 lambda 和 cloudwatch。
exports.handler = (event, context, callback) => { // TODO implement console.log("Lambda monitoring using amazon cloudwatch"); callback(null, 'Hello from Lambda'); };
当测试或触发该函数时,您应该会在 Cloudwatch 中看到一个条目。为此,请转到 AWS 服务并单击 CloudWatch。

从左侧选择日志。

当您单击日志时,它会在您的帐户中创建 AWS Lambda 函数的日志组。选择任何 AWS Lambda 函数并检查详细信息。这里,我们指的是名称为lambdaandcloudwatch的 Lambda 函数。添加到 Lambda 函数的日志显示在此处,如下所示 −

现在,让我们将 S3 触发器添加到 Lambda 函数,并在 CloudWatch 中查看日志详细信息,如下所示 −

让我们更新 AWS Lambda 代码以显示上传的文件和存储桶名称,如下面给出的代码所示 −
exports.handler = (event, context, callback) => { // TODO implement console.log("Lambda monitoring using amazon cloudwatch"); const bucket = event.Records[0].s3.bucket.name; const filename = event.Records[0].s3.object.key; const message = `File is uploaded in - ${bucket} -> ${filename}`; console.log(message); callback(null, 'Hello from Lambda'); };
现在,在 s3storetestlambdaEventbucket 中添加文件,如下所示 −

上传文件后,将触发 AWS Lambda 函数,并且 Lambda 代码的控制台日志消息将显示在 CloudWatch 中,如下所示 −

如果有任何错误,CloudWatch 将提供错误详细信息,如下所示 −

请注意,我们在 AWS Lambda 代码中错误地引用了存储桶名称,如下所示 −
exports.handler = (event, context, callback) => { // TODO implement console.log("Lambda monitoring using amazon cloudwatch"); const bucket = event.Records[0].bucket.name; const filename = event.Records[0].s3.object.key; const message = `File is uploaded in - ${bucket} -> ${filename}`; console.log(message); callback(null, 'Hello from Lambda'); };
事件中的存储桶名称引用是错误的。因此,我们应该看到 CloudWatch 中显示错误,如下所示 −

CloudWatch 指标
可以在指标中看到 Lambda 函数执行的详细信息。单击左侧显示的 Metrics。


lambda 函数 lambdaandcloudwatch 的图表详细信息如下所示 −



它提供了 Lambda 函数执行的持续时间、调用的次数以及 Lambda 函数的错误等详细信息。