[PYTHON] Verwalten Sie die Aufbewahrung von Amazon CloudWatch-Protokollgruppen mit AWS Lambda

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.

Was ich diesmal machen möchte

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!

Dieser Gegenstand

Lass es uns versuchen

IAM-Rolleneinstellungen

Der Rollenname sollte ** cloudwatchtest-lambda-role ** sein.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

IAM-Richtlinieneinstellungen

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": "*"
        }
    ]

Lambda-Einstellungen

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)

Event Bridge-Einstellungen

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. スクリーンショット 2020-08-06 17.52.02.png

Geben Sie für das Ziel die zuvor erstellte Lambda-Funktion an. スクリーンショット 2020-08-06 18.03.01.png

Damit sind die Einstellungen abgeschlossen! Lass uns gehen

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 ** スクリーンショット 2020-07-30 17.46.24.png

** Nach ein paar Minuten ** スクリーンショット 2020-07-30 17.46.45.png

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:

Referenz

・ 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

Recommended Posts

Verwalten Sie die Aufbewahrung von Amazon CloudWatch-Protokollgruppen mit AWS Lambda
Verwalten Sie Ihre Daten mit AWS RDS
PyTorch mit AWS Lambda [Lambda-Import]
Ausgabe von CloudWatch-Protokollen an S3 mit AWS Lambda (Pythyon ver)
[AWS] API mit API Gateway + Lambda erstellen
Starten / stoppen Sie den Cloud-Server von Sakura regelmäßig mit AWS Lambda + CloudWatch-Ereignissen
Benachrichtigen Sie HipChat mit AWS Lambda (Python)
[AWS] Verwenden von INI-Dateien mit Lambda [Python]
[AWS] Verknüpfen Sie Lambda und S3 mit boto3
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
[AWS] Machen Sie SSI-ähnliche Dinge mit S3 / Lambda
Ich habe gerade FizzBuzz mit AWS Lambda gemacht
Versuchen Sie, einen Cisco Spark Bot mit AWS Lambda + Amazon API Gateway (Python) zu implementieren.
[AWS SAM] Erstellen Sie eine API mit DynamoDB + Lambda + API Gateway
Regelmäßiges Serverless Scraping mit AWS Lambda + Scrapy Teil 1.8
Verwalten Sie die Umgebung deklarativ mit Nix und Home-Manager
LINE BOT mit Python + AWS Lambda + API Gateway
Serverlose Anwendung mit AWS SAM! (APIGATEWAY + Lambda (Python))
Verwalten Sie AWS mit der Python-Bibliothek Boto
[AWS] Versuchen Sie, API Gateway + Lambda mit X-Ray zu verfolgen
Ich habe versucht, AWS Lambda mit anderen Diensten zu verbinden
Automatisierung des Infrastrukturbaus mit CloudFromation + Tropical + AWS Lambda
Amazon API Gateway und AWS Lambda Python-Version