要解决在AWS CloudWatch上无服务器日志不起作用的问题,可以按照以下步骤进行操作:
const AWS = require('aws-sdk');
exports.handler = async (event, context) => {
const cloudWatchLogs = new AWS.CloudWatchLogs();
const logGroupName = '/aws/lambda/your-lambda-function-name';
const logStreamName = 'your-log-stream-name';
const logData = 'Your log data';
const params = {
logGroupName: logGroupName,
logStreamName: logStreamName,
logEvents: [
{
message: logData,
timestamp: new Date().getTime()
}
]
};
try {
await cloudWatchLogs.putLogEvents(params).promise();
console.log('Log data sent to CloudWatch successfully');
} catch (error) {
console.error('Failed to send log data to CloudWatch', error);
}
};
请确保将your-lambda-function-name
替换为您的Lambda函数的名称,将your-log-stream-name
替换为您的日志流的名称,以及将Your log data
替换为您要发送的日志数据。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
}
]
}
这将为Lambda函数提供创建日志组、创建日志流和将日志事件发送到CloudWatch的权限。
const AWS = require('aws-sdk');
exports.handler = async (event, context) => {
const cloudWatchLogs = new AWS.CloudWatchLogs();
const logGroupName = '/aws/lambda/your-lambda-function-name';
const logStreamName = 'your-log-stream-name';
const params = {
logGroupNamePrefix: logGroupName,
limit: 1
};
try {
const response = await cloudWatchLogs.describeLogGroups(params).promise();
const logGroups = response.logGroups;
const logGroup = logGroups.find(group => group.logGroupName === logGroupName);
if (logGroup) {
const logStreamParams = {
logGroupName: logGroupName,
logStreamNamePrefix: logStreamName,
limit: 1
};
const logStreamResponse = await cloudWatchLogs.describeLogStreams(logStreamParams).promise();
const logStreams = logStreamResponse.logStreams;
const logStream = logStreams.find(stream => stream.logStreamName === logStreamName);
if (logStream) {
console.log('Log group and log stream exist');
} else {
console.error('Log stream does not exist');
}
} else {
console.error('Log group does not exist');
}
} catch (error) {
console.error('Failed to describe log groups and log streams', error);
}
};
请确保将your-lambda-function-name
替换为您的Lambda函数的名称,并将your-log-stream-name
替换为您要检查的日志流的名称。
如果您发现日志组或日志流不存在,您可以使用AWS管理控制台或AWS CLI手动创建它们。
通过检查这些步骤,您应该能够解决在AWS CloudWatch上无服务器日志不起作用的问题。