Cloudwatchを使用したモニタリングとトラブルシューティング

AWS Lambdaで作成された関数は、AmazonCloudWatchによって監視されます。トリガーされたときにLambda関数に対して行われたすべてのリクエストをログに記録するのに役立ちます。

次のコードが関数名としてAWSLambdaにアップロードされていることを考慮してください lambda and cloudwatch

exports.handler = (event, context, callback) => {
   // TODO implement
   console.log("Lambda monitoring using amazon cloudwatch");    
   callback(null, 'Hello from Lambda');
};

関数がテストまたはトリガーされると、Cloudwatchにエントリが表示されます。この目的のために、AWSサービスに移動し、CloudWatchをクリックします。

左側からログを選択します。

クリックすると Logs、それは持っています Log Groupsアカウントで作成されたAWSLambda関数の anyAWS Lambda関数を選択し、詳細を確認します。ここでは、Lambda関数を次の名前で参照しています。lambdaandcloudwatch。Lambda関数に追加されたログは、以下のようにここに表示されます-

ここで、S3トリガーをLambda関数に追加して、以下に示すようにCloudWatchでログの詳細を確認しましょう。

以下のコードに示すように、アップロードされたファイルとバケット名を表示するようにAWSLambdaコードを更新しましょう-

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は以下に示すエラーの詳細を提供します-

示されているように、AWSLambdaコードでバケット名を誤って参照していることに注意してください-

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 左側に表示されます。

ラムダ関数のグラフの詳細 lambdaandcloudwatch 以下のようになります−

Lambda関数が実行される期間、呼び出される回数、Lambda関数からのエラーなどの詳細が表示されます。