我认为您可以创建另一个简单的 Lambda 函数来记录它收到的每个调用。
语言: Javascript (NodeJs)
例如,有效载荷如下所示:
{
"identifier": "LambdaName(Caller)",
"level": "ERROR",
"message": "This a log"
}
名称: LambdaLogger
Lambda代码:可以根据传入的level添加条件,调用具体的日志函数,即:console.error,或者console.log等。
"use strict";
/**
* This handler only logs the received event data.
*/
exports.handler = (event, context, callback) => {
console.log("[" + event.level + "] - Caller [" + event.identifier + "] - " + event.message);
};
现在,在 Cloudwatch 上为 LambdaLogger 创建一个 LogStream。
现在您只需从其他函数调用该 Lambda 函数。
例如:
创建一个名为 setupLogger 的函数
var function setupLogger() {
var lambda = new AWS.Lambda({region: AWS_REGION});
console.log = function(msg) {
var lambda = new AWS.Lambda({region: AWS_REGION});
var params = {
FunctionName: "LambdaLogger",
InvocationType: 'Event',
Payload: JSON.stringify({
"identifier": "TheCurrentLambdaName",
"level": "DEBUG",
"message": msg
})
};
lambda.invoke(params, function(err, data) {
// Here you can get handle the response from the "logger".
});
};
};
上述函数应该存在于每个 Lambda 函数中,并且必须在代码的第一行执行。
exports.handler = (event, context, callback) => {
var function setupLogger() {
var lambda = new AWS.Lambda({region: AWS_REGION});
console.log = function(msg) {
var lambda = new AWS.Lambda({region: AWS_REGION});
var params = {
FunctionName: "LambdaLogger",
InvocationType: 'Event',
Payload: JSON.stringify({"identifier": "TheCurrentLambdaName", "level": "DEBUG", "message": msg
})
};
lambda.invoke(params, function(err, data) { // Here you can get handle the response from the "logger".});
};
};
setupLogger(); //this is the first line you need to execute.
// Your lambda code
console.log("Hello World!"); // This line is an example that will invoke the LambdaLogger and you will be able to check the LogStream of LambdaLogger.
};
希望对您有所帮助!