¿Cómo puedo automatizar el proceso de eliminación del registro de errores de AWS DMS para evitar que mi instancia de replicación alcance el estado «almacenamiento lleno»?

5 minutos de lectura
0

Quiero automatizar el proceso de eliminación del registro de errores de AWS Database Migration Service (AWS DMS) para que se ejecute con mayor frecuencia.

Breve descripción

Si los registros de errores de AWS DMS ocupan mucho espacio en la instancia de replicación de DMS, es posible que esta pase al estado storage-full (almacenamiento lleno). Para solucionar este problema, elimine los registros de errores de tareas de DMS.

Puede eliminar el registro de errores de tareas de AWS DMS mediante uno de los siguientes métodos:

  • Consola de AWS DMS
  • Interfaz de la línea de comandos de AWS (AWS CLI)
  • API 
  • Programador de Lambda

Nota: El estado storage-full se puede alcanzar por diversos motivos. Para obtener más información, consulte Why is my AWS DMS replication DB instance in the storage-full status?

Solución

Nota: Si se muestran errores al ejecutar comandos de AWS CLI, consulte Errores de solución de problemas de la AWS CLI. Además, asegúrese de utilizar la versión más reciente de AWS CLI.

Utilización de la consola de AWS DMS

Para eliminar manualmente los registros de errores de tareas de DMS, consulte ¿Cómo puedo activar los registros de CloudWatch para AWS DMS, acceder a ellos o eliminarlos?

Utilización de AWS CLI

Para utilizar AWS CLI con el fin de modificar la configuración de las tareas y eliminar los registros de tareas de DMS, ejecute el comando modify-replication-task:

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

Este comando cambia el parámetro "DeleteTaskLogs": true para modificar la tarea. Tras añadir la configuración de la tarea con este parámetro, todos los registros de la tarea se eliminarán de la instancia de replicación. Una vez eliminados los registros, la configuración de la tarea eliminará el parámetro "DeleteTaskLogs": true. Tras ejecutar este comando, confirme que los registros se hayan eliminado de la instancia de replicación.

Para eliminar periódicamente los registros, utilice el parámetro "DeleteTaskLogs": true con el fin de modificar la configuración de la tarea. Puede utilizar cron para programar modify-replication-task de modo que se ejecute periódicamente.

Utilización de la API

Para eliminar los registros de tareas de AWS DMS automáticamente, cree un script que se ejecute a diario o con la frecuencia que desee. En el siguiente ejemplo, se utiliza código Python y AWS Lambda para automatizar la eliminación del registro de errores de tareas correspondiente al ARN de tarea proporcionado.

Configuración de la función de Lambda

Para configurar la función de Lambda, siga estos pasos:

1.    Abra la consola de Lambda y, a continuación, elija la región de AWS que contenga sus recursos de DMS.

2.    En el panel Funciones, seleccione Crear una función.

3.    Introduzca el Nombre de la función.

4.    En Tiempo de ejecución, elija python 3.8.

5.    En Cambiar el rol de ejecución predeterminado, elija Create a new role with basic Lambda permissions. Anote el nombre del rol de AWS Identity and Access Management (IAM) creado por Lambda.

6.    Elija Crear una función.

7.    Abra la consola de AWS IAM y, a continuación, abra el rol de IAM creado por la función de Lambda.

8.    Cree una política de IAM mediante el siguiente JSON. Sustituya el ARN de la tarea de ejemplo por el ARN de su tarea:

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

9.    Asocie la política al rol creado por la función de Lambda.

10.    Abra la consola de Lambda y, a continuación, elija la función de Lambda que ha creado.

11.    En Código de la función, introduzca el siguiente código y, a continuación, haga clic en Implementar:

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.    Elija Probar y, a continuación, introduzca el Nombre del evento con la plantilla predeterminada.

13.    Elija Crear y, a continuación, vuelva a elegir Probar.

El estado de la tarea de DMS cambia a Modificando. Al mismo tiempo, se eliminan los registros de errores de tareas de DMS de la instancia de replicación.

Utilización del programador de Lambda

Para utilizar el programador de Lambda con el fin de automatizar los registros de errores de tareas de DMS, siga estos pasos:

  1. Abra la consola de Lambda y, a continuación, elija la función de Lambda que ha creado.
  2. En Diseño, elija Agregar desencadenador.
  3. En la lista desplegable, elija EventBridge (Cloudwatch Events).
  4. En Regla, elija Crear una regla nueva.
  5. Rellene Nombre de la regla y Descripción de regla.
  6. En Expresión de programación, introduzca la expresión rate. Para obtener más información, consulte Programación de expresiones con rate o cron.
  7. Elija Agregar.

Nota: Puede cambiar este código y optimizarlo. También puede utilizar cron o el programador de Lambda para programar este script de modo que se ejecute periódicamente.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 6 meses