Comment automatiser le processus de suppression du journal d'erreurs AWS DMS, afin d'éviter la saturation du stockage de mon instance de réplication ?

Lecture de 5 minute(s)
0

Je souhaite automatiser le processus de suppression du journal d'erreurs AWS Database Migration Service (AWS DMS), afin qu'il soit supprimé plus fréquemment.

Brève description

Si vos journaux d'erreurs AWS DMS occupent beaucoup d'espace dans votre instance de réplication DMS, il est possible que l'instance de réplication passe à l'état de Stockage plein. Pour résoudre ce problème, supprimez les journaux d'erreurs de tâches DMS correspondant à vos tâches DMS.

Pour supprimer le journal des erreurs de votre tâche AWS DMS, appliquez l'une des méthodes suivantes :

  • Console AWS DMS
  • Interface de la ligne de commande AWS (AWS CLI)
  • API 
  • Planificateur Lambda

Remarque : plusieurs raisons peuvent entraîner le passage à l'état Stockage plein. Pour en savoir plus, consultez la page Pourquoi mon instance de base de données de réplication AWS DMS présente-t-elle l'état Stockage plein ?

Résolution

Remarque : si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez la section Résolution des erreurs liées à WS CLI. Vérifiez également que vous utilisez la version la plus récente d'AWS CLI.

Utiliser la console AWS DMS

Pour supprimer manuellement vos journaux d'erreurs de tâches DMS, consultez Comment activer, consulter ou supprimer les journaux CloudWatch pour AWS DMS ?

Utiliser AWS CLI

Pour utiliser AWS CLI afin de modifier vos paramètres de tâches et de supprimer vos journaux de tâches DMS, exécutez la commande modify-replication-task :

aws dms modify-replication-task --replication-task-arn <DMS task ARN> --replication-task-settings '{"Logging": { "DeleteTaskLogs": true}}'

Cette commande change le paramètre « DeleteTaskLogs » : vrai pour modifier la tâche. Une fois que vous avez ajouté le paramètre de tâche avec ce paramètre, tous les journaux de la tâche sont supprimés de l'instance de réplication. Une fois les journaux supprimés, les paramètres de tâche suppriment le paramètre « DeleteTaskLogs » : vrai. Après avoir exécuté cette commande, vérifiez que les journaux sont supprimés de l'instance de réplication.

Pour supprimer régulièrement les journaux, utilisez le paramètre « DeleteTaskLogs » : vrai pour modifier le paramètre de tâche. Vous pouvez utiliser la tâche cron pour planifier l'exécution périodique de modify-replication-task.

Utiliser l'API

Pour supprimer automatiquement les journaux de tâches AWS DMS, créez un script à exécuter tous les jours ou à la fréquence de votre choix. L'exemple suivant utilise le code AWS Lambda et Python pour automatiser la suppression du journal d'erreurs de tâches pour l'ARN de la tâche fourni.

Configurer la fonction Lambda

Pour configurer la fonction Lambda, procédez comme suit :

1.    Ouvrez la console Lambda, puis choisissez la région AWS qui contient vos ressources DMS.

2.    Dans le volet Fonctions, choisissez Créer une fonction.

3.    Saisissez un Nom de fonction.

4.    Pour le champ Exécution, choisissez python 3.8.

5.    Pour le champ Modifier le rôle d'exécution par défaut, choisissez Créer un nouveau rôle avec des autorisations Lambda de base. Notez le nom du rôle Gestion des identités et des accès AWS (AWS IAM) créé par Lambda.

6.    Sélectionnez Créer une fonction.

7.    Ouvrez la console AWS IAM, puis ouvrez le rôle IAM créé par la fonction Lambda.

8.    Pour le champ Créer une politique IAM, utilisez le code JSON suivant. Remplacez l'exemple d'ARN de tâche par votre ARN de tâche :

{    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "dms:ModifyReplicationTask"
            ],
            "Resource": "arn:aws:dms:us-east-1:1234567890:task:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
        }
    ]
}

9.    Attachez la politique au rôle créé par la fonction Lambda.

10.    Ouvrez la console Lambda, puis choisissez la fonction Lambda que vous avez créée.

11.    Pour le champ Code de fonction, saisissez le code suivant, puis choisissez Déployer :

import boto3import json
client = boto3.client('dms')
def lambda_handler(event, context):
    # specific task ARN
    taskarn = 'arn:aws:dms:us-east-1:1234567890:task:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
    # modify the DMS task
    response = client.modify_replication_task(
        ReplicationTaskArn=taskarn,
        ReplicationTaskSettings='{"Logging": { "DeleteTaskLogs": true}}'
    )

12.    Choisissez Test, puis saisissez le nom de l'événement avec le modèle par défaut.

13.    Choisissez Créer, puis sélectionnez à nouveau Tester.

Le statut de la tâche DMS devient Modification. En parallèle, les journaux d'erreurs des tâches DMS situés sous l'instance de réplication sont supprimés.

Utiliser le planificateur Lambda

Pour utiliser le planificateur Lambda afin d'automatiser les journaux d'erreurs des tâches DMS, procédez comme suit :

  1. Ouvrez la console Lambda, puis choisissez la fonction Lambda que vous avez créée.
  2. Pour le champ Designer, choisissez Ajouter un déclencheur.
  3. Dans la liste déroulante, choisissez EventBridge (Cloudwatch Events).
  4. Pour le champ Règle, choisissez Créer une nouvelle règle.
  5. Saisissez le Nom de la règle et la Description de la règle.
  6. Pour le champ Expression de planification, saisissez l'expression de fréquence. Pour en savoir plus, consultez la page Planifier des expressions à l'aide de la fréquence ou de cron.
  7. Choisissez Ajouter.

Remarque : vous pouvez modifier et optimiser ce code. Vous pouvez également utiliser la tâche cron ou le planificateur Lambda pour planifier l'exécution périodique de ce script.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 6 mois