Come posso automatizzare il processo di eliminazione del log degli errori di AWS DMS per evitare che la mia istanza di replica passi allo stato di storage pieno?

4 minuti di lettura
0

Voglio automatizzare il processo di eliminazione del log degli errori di AWS Database Migration Service (AWS DMS) per eliminarlo più spesso.

Breve descrizione

Se i log degli errori di AWS DMS occupano molto spazio nella tua istanza di replica DMS, l'istanza di replica potrebbe passare allo stato di storage pieno. Per risolvere questo problema, elimina i log degli errori delle attività DMS per le attività DMS.

Per eliminare il log degli errori per la tua attività AWS DMS, usa uno dei seguenti metodi:

  • Console AWS DMS
  • Interfaccia della linea di comando AWS (AWS CLI)
  • API 
  • Pianificatore Lambda

Nota: Lo stato di storage pieno può essere causato da diversi motivi. Per ulteriori informazioni, consulta Perché la mia istanza database di replica AWS DMS ha lo stato di storage pieno?

Risoluzione

Nota: se ricevi dei messaggi di errore quando esegui i comandi dell'interfaccia della linea di comando AWS, consulta la sezione Risolvere gli errori AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Usa la console AWS DMS

Per eliminare manualmente i log degli errori delle attività DMS, consulta Come posso attivare, accedere o eliminare i log CloudWatch per AWS DMS?

Usa AWS CLI

Per modificare le impostazioni delle attività ed eliminare i log delle attività DMS utilizzando l'interfaccia della linea di comando AWS, esegui il comando modify-replication-task:

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

Questo comando modifica il parametro "DeleteTaskLogs": true per modificare l'attività. Dopo aver aggiunto l'impostazione dell'attività con questo parametro, tutti i log per questa attività vengono eliminati dall'istanza di replica. Dopo l'eliminazione dei log, le impostazioni dell'attività rimuovono il parametro "DeleteTaskLogs": true. Dopo aver eseguito questo comando, conferma che i log sono stati eliminati dall'istanza di replica.

Per eliminare periodicamente i log, usa il parametro "deleteTaskLogs": true, modificando così l'impostazione dell'attività. È possibile utilizzare un cron job per pianificare l'esecuzione periodica di modify-replication-task.

Usa l'API

Per eliminare automaticamente i log delle attività di AWS DMS, crea uno script da eseguire ogni giorno o alla frequenza che desideri. L'esempio seguente utilizza il codice Python e AWS Lambda per automatizzare l'eliminazione del log degli errori delle attività per l’attività ARN fornita.

Configurare la funzione Lambda

Per configurare la funzione Lambda, completa i seguenti passaggi:

1.    Apri la console Lambda, quindi scegli la regione AWS contenente le tue risorse DMS.

2.    Nel pannello Funzioni, scegli Crea funzione.

3.    Immetti un Nome per la funzione.

4.    Per Runtime, scegli python 3.8.

5.    Per Cambia il ruolo di esecuzione predefinito, scegli Crea un nuovo ruolo con autorizzazioni Lambda di base. Annota il nome del ruolo di AWS Identity and Access Management (IAM) creato da Lambda.

6.    Scegli Crea funzione.

7.    Apri la console AWS IAM, quindi apri il ruolo IAM creato dalla funzione Lambda.

8.    Per creare una policy IAM, utilizza il seguente JSON. Sostituisci l'ARN dell'attività di esempio con l'ARN della tua attività:

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

9.    Associa la policy al ruolo creato dalla funzione Lambda.

10.    Apri la console Lambda, quindi scegli la funzione Lambda che hai creato.

11.    Nel campo Codice funzione, inserisci il codice seguente, quindi seleziona Distribuisci:

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.    Scegli Test, quindi immetti il Nome dell'evento con il modello predefinito.

13.    Scegli Crea, quindi scegli di nuovo Test.

Lo stato dell'attività DMS cambia in Modifica in corso. Allo stesso tempo, i log degli errori delle attività DMS sotto l'istanza di replica vengono eliminati.

Usa il pianificatore Lambda

Per utilizzare il pianificatore Lambda per automatizzare i log degli errori delle attività DMS, completa i seguenti passaggi:

  1. Apri la console Lambda, quindi scegli la funzione Lambda che hai creato.
  2. Per Designer, scegli Aggiungi trigger.
  3. Dall'elenco a discesa, scegli EventBridge (Cloudwatch Events).
  4. Per Regola, scegli Crea una nuova regola.
  5. Inserisci il Nome della regola e la Descrizione della regola.
  6. Per Pianifica l'espressione, inserisci l'espressione della frequenza. Per ulteriori informazioni, consulta Pianificare le espressioni utilizzando rate o cron.
  7. Scegli Aggiungi.

Nota: È possibile modificare e ottimizzare questo codice. Puoi anche usare un cron job o il pianificatore Lambda per pianificare l'esecuzione periodica di questo script.

AWS UFFICIALE
AWS UFFICIALEAggiornata 6 mesi fa