Wie automatisiere ich den Löschvorgang des AWS DMS-Fehlerprotokolls, um zu vermeiden, dass der Speicher meiner Replikations-Instance voll ist?

Lesedauer: 4 Minute
0

Ich möchte den Löschvorgang des AWS Database Migration Service (AWS DMS)-Fehlerprotokolls automatisieren, damit es häufiger gelöscht wird.

Kurzbeschreibung

Wenn Ihre AWS DMS-Fehlerprotokolle viel Speicherplatz in Ihrer DMS-Replikations-Instance beanspruchen, geht die Replikations-Instance möglicherweise in den Status Speicher voll über. Um dieses Problem zu beheben, löschen Sie die DMS-Aufgabenfehlerprotokolle für Ihre DMS-Aufgaben.

Sie können das Fehlerprotokoll für Ihre AWS DMS-Aufgabe mit einer der folgenden Methoden löschen:

  • AWS-DMS-Konsole
  • AWS Command Line Interface (AWS CLI)
  • API 
  • Lambda-Scheduler

Hinweis: Es gibt mehrere Gründe, die dazu führen können, dass der Status Speicher voll auftritt. Weitere Informationen finden Sie unter Warum hat meine AWS DMS-Replikations-DB-Instance den Status „Speicher voll“?

Behebung

Hinweis: Wenn Sie beim Ausführen von Befehlen im AWS-CLI Fehlermeldungen erhalten, finden Sie weitere Informationen unter Beheben von Fehlern im AWS CLI. Stellen Sie außerdem sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Öffnen Sie die AWS-DMS-Konsole

Informationen zum manuellen Löschen Ihrer DMS-Aufgabenfehlerprotokolle finden Sie unter Wie aktiviere ich CloudWatch-Protokolle für AWS DMS, greife darauf zu oder lösche sie?

Verwenden der AWS-CLI

Um die AWS-CLI zu verwenden, um Ihre Aufgabeneinstellungen zu ändern und Ihre DMS-Aufgabenprotokolle zu löschen, führen Sie den Befehl modify-replication-task aus:

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

Dieser Befehl ändert den Parameter „DeleteTaskLogs“: true, um die Aufgabe zu ändern. Nachdem Sie die Aufgabeneinstellung mit diesem Parameter hinzugefügt haben, werden alle Protokolle für die Aufgabe aus der Replikations-Instance gelöscht. Nachdem die Protokolle gelöscht wurden, entfernen die Aufgabeneinstellungen den Parameter „DeleteTaskLogs“: true. Nachdem Sie diesen Befehl ausgeführt haben, vergewissern Sie sich, dass die Protokolle aus der Replikations-Instance gelöscht wurden.

Um die Protokolle regelmäßig zu löschen, verwenden Sie den Parameter „DeleteTaskLogs“: true, um die Aufgabeneinstellung zu ändern. Sie können den Cronjob verwenden, um die regelmäßige Ausführung der modify-replication-task zu planen.

Verwenden der API

Um AWS DMS-Aufgabenprotokolle automatisch zu löschen, erstellen Sie ein Skript, das täglich oder in der gewünschten Häufigkeit ausgeführt wird. In diesem Beispiel wird einfacher Python-Code verwendet, um das Löschen des Aufgabenfehlerprotokolls für den bereitgestellten Aufgaben-ARN mithilfe von AWS Lambda zu automatisieren.

Die Lambda-Funktion einrichten

Gehen Sie wie folgt vor, um die Lambda-Funktion einzurichten:

1.    Öffnen Sie die Lambda-Konsole und wählen Sie dann die AWS-Region aus, die Ihre DMS-Ressourcen enthält.

2.    Wählen Sie im Bedienfeld Funktionen die Option Funktion erstellen.

3.    Geben Sie einen Funktionsnamen ein.

4.    Wählen Sie für Runtime Python 3.8.

5.    Wählen Sie unter Standardausführungsrolle ändern die Option Neue Rolle mit grundlegenden Lambda-Berechtigungen erstellen aus. Notieren Sie sich den von Lambda erstellten Rollennamen für AWS Identity and Access Management (IAM).

6.    Wählen Sie Funktion erstellen aus.

7.    Öffnen Sie die AWS IAM-Konsole und dann die IAM-Rolle, die die Lambda-Funktion erstellt hat.

8.    Um eine IAM-Richtlinie zu erstellen, verwenden Sie die folgende JSON. Ersetzen Sie den Beispiel-Aufgaben-ARN durch Ihren Aufgaben-ARN:

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

9.    Ordnen Sie die Richtlinie der Rolle zu, die die Lambda-Funktion erstellt hat.

10.    Öffnen Sie die Lambda-Konsole und wählen Sie dann die Lambda-Funktion aus, die Sie erstellt haben.

11.    Geben Sie für den Funktionscode den folgenden Code ein und klicken Sie dann auf Bereitstellen:

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.    Wählen Sie Test und geben Sie dann den Ereignisnamen mit der Standardvorlage ein.

13.    Wählen Sie Erstellen und dann erneut Test aus.

Der Status der DMS-Aufgabe ändert sich in Ändern. Gleichzeitig können Sie sehen, dass die DMS-Aufgabenfehlerprotokolle unter der Replikations-Instance gelöscht werden.

Verwenden des Lambda-Schedulers

Gehen Sie wie folgt vor, um den Lambda-Scheduler zur Automatisierung von DMS-Aufgabenfehlerprotokollen zu verwenden:

  1. Öffnen Sie die Lambda-Konsole und wählen Sie dann die Lambda-Funktion aus, die Sie erstellt haben.
  2. Wählen Sie für Designer die Option Trigger hinzufügen.
  3. Wählen Sie in der Dropdown-Liste EventBridge (Cloudwatch Events) aus.
  4. Wählen Sie für Regel die Option Neue Regel erstellen aus.
  5. Geben Sie den Regelnamen und die Regelbeschreibung ein.
  6. Geben Sie für Terminplanausdruck den Preisausdruck ein. Weitere Informationen finden Sie unter Ausdrücke mit Rate oder Cron planen.
  7. Wählen Sie Hinzufügen aus.

Hinweis: Sie können diesen Code ändern und optimieren. Sie können auch den Cronjob oder den Lambda-Scheduler verwenden, um die regelmäßige Ausführung dieses Skripts zu planen.