Wenn ich Protokolle für meine AWS-Lambda-Funktion in der Amazon-CloudWatch-Konsole anzeige, erhalte ich die Fehlermeldung „Protokollgruppe ist nicht vorhanden“. Ich möchte den Fehler beheben.
Kurzbeschreibung
Wenn beim Versuch, die Protokolle deiner Funktion anzuzeigen, keine Protokollgruppe für deine Lambda-Funktion vorhanden ist, gibt CloudWatch den folgenden Fehler zurück:
„Log group does not exist. The specific log group: <log group name> does not exist in this account or region.“
Protokolle werden generiert, nachdem du die Funktion zum ersten Mal ausgeführt hast. Wenn nach dem Aufrufen der Funktion keine Protokollgruppe vorhanden ist, liegt ein Problem mit den AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement)-Berechtigungen der Funktion vor.
Stelle Folgendes sicher, um den CloudWatch-Fehler Protokollgruppe ist nicht vorhanden zu beheben:
- Die Ausführungsrolle deiner Lambda-Funktion verfügt über ausreichende Berechtigungen, um Protokolle in CloudWatch zu schreiben.
- Die Protokollgruppenressource in der IAM-Richtlinie enthält den Namen deiner Funktion.
Hinweis: Informationen zu berechtigungsbezogenen Protokollierungsproblemen mit Lambda@Edge findest du unter Serviceverknüpfte Rollen für Lambda@Edge.
Lösung
Hinweis: Die folgende Lösung funktioniert nicht für verweigerte Berechtigungen auf höherer Ebene, z. B. durch eine Service-Kontrollrichtlinie (Service Control Policy, SCP) oder eine Berechtigungsgrenze. Du musst zuerst die verweigerten Berechtigungen beheben.
Bearbeite die IAM-Richtlinie für die Ausführungsrolle der Lambda-Funktion so, dass sie Folgendes enthält:
- Erlaube die Schreibaktionen CreateLogGroup und CreateLogStream.
Hinweis: Wenn du für deine Funktion keine benutzerdefinierten Berechtigungen benötigst, kannst du die verwaltete Richtlinie AWSLambdaBasicExecutionRole anhängen, damit Lambda Protokolle in CloudWatch schreiben kann.
- Die im ARN angegebene AWS-Region entspricht der Region der Lambda-Funktion.
- Die Ressource log-group enthält den Namen der Lambda-Funktion. Wenn die Funktion beispielsweise myLambdaFunction heißt, ist /aws/lambda/myLambdaFunction die zugehörige log-group.
Im Folgenden findest du eine Beispielrichtlinie, die die erforderlichen Berechtigungen für eine Lambda-Rolle enthält, um auf CloudWatch-Protokolle zuzugreifen:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "logs:CreateLogGroup",
"Resource": "arn:aws:logs:region:accountId:*"
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:region:accountId:log-group:/aws/lambda/functionName:*"
]
}
]
}
Hinweis: Stelle sicher, dass du den Lambda-Service zur Vertrauensrichtlinie der IAM-Rolle hinzufügst:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Ähnliche Informationen
Verwaltung von Berechtigungen in AWS Lambda