[PYTHON] Gérer la rétention des groupes de journaux Amazon CloudWatch avec AWS Lambda

Bonjour, c'est risako de stremapack. Après une longue saison des pluies, l'été est arrivé: ensoleillé: Il faut faire plus attention à ne pas avoir de coup de chaleur avec le masque tout en faisant attention à corona: mask: Je passerai cet été à faire attention à ma condition physique.

Ce que je veux faire cette fois

Le thème cette fois est «Gérons la période de rétention des groupes de journaux Amazon CloudWatch avec AWS Lambda»! Si vous utilisez Amazon ECS ou AWS Lambda (Lambda), les journaux continueront de s'accumuler dans Amazon CloudWatch (CoudWatch). De plus, la période de rétention du groupe de journaux CloudWatch est définie par défaut sur «Ne jamais expirer», les journaux resteront donc indéfiniment et le montant augmentera. Cette fois, afin de réduire le plus possible le montant d'argent, je voudrais introduire un mécanisme dans Lambda qui change automatiquement la période de rétention du groupe de journaux nouvellement créé à "1 mois"!

Cet objet

essayons

Paramètres de rôle IAM

Le nom du rôle doit être ** cloudwatchtest-lambda-role **.

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

Paramètres de stratégie IAM

Le nom de la stratégie est ** cloudwatchtest-lambda-policy **. Vous avez reçu l'autorisation d'utiliser CloudWatch.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:DescribeLogGroups",
                "logs:PutRetentionPolicy",
                "logs:CreateLogGroup",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        }
    ]

Paramètres Lambda

La fonction Lambda a été créée ci-dessous. ** Nom de la fonction: change_Retention_for_cloudwatch-logs Exécution: Python 3.8 **

Code de fonction Je souhaite modifier la période de rétention du groupe de journaux nouvellement créé sur ** 1 mois (30 jours) **, définissez donc retentionInDays = 30. Ici, vous spécifiez la période de conservation souhaitée. Exemple: 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)

Paramètres du pont d'événements

Cette fois, je souhaite déplacer le Lambda créé ci-dessus avec le nouveau groupe de journaux CloudWatch en cours de création, alors faisons-le détecter par les règles d'EventBridge. Créons maintenant une règle.

La définition du modèle est définie ci-dessous. ** Modèle d'événement Modèle de correspondance d'événement: modèle personnalisé **

Mettez le code à définir dans le carré sur le côté droit. スクリーンショット 2020-08-06 17.52.02.png

Pour la cible, spécifiez la fonction Lambda créée précédemment. スクリーンショット 2020-08-06 18.03.01.png

Ceci termine les réglages! Bougeons

Si la période de rétention du groupe de journaux Cloudwatch nouvellement créé est d'un mois, le contrôle de fonctionnement est OK! Créez-en un nouveau à partir de «Créer un groupe de journaux» dans la console CloudWatch.

** Immédiatement après la création ** スクリーンショット 2020-07-30 17.46.24.png

** Après quelques minutes ** スクリーンショット 2020-07-30 17.46.45.png

La période de rétention n'est pas reflétée immédiatement après en avoir créé une nouvelle, mais vous pouvez confirmer que la période de rétention a été définie correctement. Cela semble empêcher le journal de s'accumuler et d'augmenter le prix sans le savoir: ok_hand:

référence

・ Qu'est-ce qu'Amazon Event Bridge? https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/what-is-amazon-eventbridge.html ・ Qu'est-ce qu'Amazon CloudWatch Logs? https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html ・ Comment puis-je réduire les frais futurs après avoir confirmé pourquoi les frais d'utilisation de CloudWatch ont été facturés? https://aws.amazon.com/jp/premiumsupport/knowledge-center/cloudwatch-understand-and-reduce-charges/?nc1=h_ls

Recommended Posts

Gérer la rétention des groupes de journaux Amazon CloudWatch avec AWS Lambda
Gérez vos données avec AWS RDS
PyTorch avec AWS Lambda [importation Lambda]
Exporter les journaux CloudWatch vers S3 avec AWS Lambda (Pythyon ver)
[AWS] Créer une API avec API Gateway + Lambda
Démarrez / arrêtez régulièrement le serveur cloud de Sakura avec AWS Lambda + CloudWatch Events
Notifier HipChat avec AWS Lambda (Python)
[AWS] Utilisation de fichiers ini avec Lambda [Python]
[AWS] Associez Lambda et S3 à boto3
Connectez-vous à s3 avec AWS Lambda Python
[AWS] Faites des choses de type SSI avec S3 / Lambda
Je viens de faire FizzBuzz avec AWS Lambda
Essayez d'implémenter un robot Cisco Spark avec AWS Lambda + Amazon API Gateway (Python)
[AWS SAM] Créer une API avec DynamoDB + Lambda + API Gateway
Grattage sans serveur régulier avec AWS lambda + scrapy Part 1.8
Gérez de manière déclarative l'environnement avec Nix et home-manager
LINE BOT avec Python + AWS Lambda + API Gateway
Application sans serveur avec AWS SAM! (APIGATEWAY + Lambda (Python))
Gérez bien AWS avec la bibliothèque Python Boto
[AWS] Essayez de tracer API Gateway + Lambda avec X-Ray
J'ai essayé de connecter AWS Lambda à d'autres services
Automatisation de la construction de l'infrastructure avec CloudFromation + troposphère + AWS Lambda
Version Amazon API Gateway et AWS Lambda Python