Hallo, das ist Risako von Stremapack. Nach einer langen Regenzeit ist der Sommer gekommen: sonnig: Sie müssen vorsichtiger sein, um keinen Hitzschlag mit der Maske zu bekommen, während Sie auf Corona achten: Maske: Ich werde diesen Sommer damit verbringen, auf meine körperliche Verfassung zu achten.
Dieses Mal lautet das Thema "Verwalten der Aufbewahrungsdauer von Amazon CloudWatch-Protokollgruppen mit AWS Lambda"! Bei Verwendung von Amazon ECS oder AWS Lambda (im Folgenden: Lambda) werden weiterhin Protokolle in Amazon CloudWatch (im Folgenden: CoudWatch) gesammelt. Darüber hinaus ist die Aufbewahrungsdauer der CloudWatch-Protokollgruppe standardmäßig auf "Nie ablaufen" eingestellt, sodass die Protokolle für immer erhalten bleiben und sich der Betrag erhöht. Dieses Mal möchte ich in Lambda einen Mechanismus einführen, der die Aufbewahrungsdauer der neu erstellten Protokollgruppe automatisch auf "1 Monat" ändert, um den Geldbetrag so weit wie möglich zu reduzieren!
Der Rollenname sollte ** cloudwatchtest-lambda-role ** sein.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Der Richtlinienname lautet ** cloudwatchtest-lambda-policy **. Sie haben die Berechtigung zum Betrieb von CloudWatch erhalten.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:DescribeLogGroups",
"logs:PutRetentionPolicy",
"logs:CreateLogGroup",
"logs:PutLogEvents"
],
"Resource": "*"
}
]
Die Lambda-Funktion wurde unten erstellt. ** Funktionsname: change_Retention_for_cloudwatch-logs Laufzeit: Python 3.8 **
Funktionscode Ich möchte den Aufbewahrungszeitraum der neu erstellten Protokollgruppe auf ** 1 Monat (30 Tage) ** ändern, also setze RetentionInDays = 30. Hier legen Sie die gewünschte Aufbewahrungsdauer fest. Beispiel: 1.3.5.7.60
import boto3
logs = boto3.client('logs')
def lambda_handler(event, context):
loggroupname = event['detail']['requestParameters']['logGroupName']
try:
response = logs.put_retention_policy(
logGroupName = loggroupname,
retentionInDays = 30
)
except Exception as e:
print(e)
Dieses Mal möchte ich das oben erstellte Lambda verschieben, während die neue CloudWatch-Protokollgruppe erstellt wird. Lassen Sie es also anhand der Regeln von EventBridge erkennen. Jetzt erstellen wir eine Regel.
Die Musterdefinition ist unten festgelegt. ** Ereignismuster Ereignisübereinstimmungsmuster: Benutzerdefiniertes Muster **
Fügen Sie den zu definierenden Code in das Quadrat auf der rechten Seite ein.
Geben Sie für das Ziel die zuvor erstellte Lambda-Funktion an.
Wenn die Aufbewahrungsdauer der neu erstellten Cloudwatch-Protokollgruppe einen Monat beträgt, ist die Funktionsprüfung in Ordnung! Erstellen Sie eine neue über "Protokollgruppe erstellen" in der CloudWatch-Konsole.
** Unmittelbar nach der Erstellung **
** Nach ein paar Minuten **
Die Aufbewahrungsfrist wird nicht unmittelbar nach dem Erstellen einer neuen Aufbewahrungsfrist angezeigt. Sie können jedoch bestätigen, dass die Aufbewahrungsfrist korrekt eingestellt wurde. Dies scheint zu verhindern, dass sich das Protokoll ansammelt und den Preis unwissentlich erhöht: ok_hand:
・ Was ist Amazon Event Bridge? https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/what-is-amazon-eventbridge.html ・ Was sind Amazon CloudWatch-Protokolle? https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html ・ Wie kann ich zukünftige Gebühren reduzieren, nachdem ich bestätigt habe, warum CloudWatch-Nutzungsgebühren erhoben wurden? https://aws.amazon.com/jp/premiumsupport/knowledge-center/cloudwatch-understand-and-reduce-charges/?nc1=h_ls