Como automatizar o processo de exclusão dos logs de erros do AWS DMS para evitar o estado de armazenamento cheio em uma instância de replicação?

5 minuto de leitura
0

Quero automatizar o processo de exclusão dos logs de erros do AWS Database Migration Service (AWS DMS) para excluir os logs com mais frequência.

Breve descrição

Se os logs de erros do AWS DMS ocuparem muito espaço em uma instância de replicação do DMS, ela poderá entrar em estado de armazenamento cheio. Para resolver esse problema, exclua os logs de erros de tarefas do DMS das tarefas do DMS.

Para excluir os logs de erros de uma tarefa do AWS DMS, use um dos seguintes métodos:

  • Console do AWS DMS
  • AWS Command Line Interface (AWS CLI)
  • API 
  • Programador Lambda

Observação: há vários motivos que podem fazer com que o estado de armazenamento cheio ocorra. Para obter mais informações, consulte I want to automate the AWS Database Migration Service (AWS DMS) error log deletion process to delete more frequently.

Resolução

Observação: se você receber erros ao executar comandos da AWS CLI, consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Abra o console do AWS DMS

Para excluir manualmente seus logs de erros de tarefas do DMS, consulte Como faço para ativar, acessar ou excluir logs do CloudWatch para o AWS DMS?

Use a AWS CLI

Para usar a AWS CLI para modificar suas configurações de tarefas e excluir seus logs de tarefas do DMS, execute o comando modify-replication-task:

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

Esse comando altera o parâmetro "DeleteTaskLogs": true para modificar a tarefa. Depois de adicionar a configuração da tarefa com esse parâmetro, todos os logs da tarefa são excluídos da instância de replicação. Depois de excluir os logs, as configurações da tarefa removem o parâmetro "DeleteTaskLogs”: true. Depois de executar o comando, verifique se os logs foram excluídos da instância de replicação.

Para excluir os logs periodicamente, use o parâmetro "DeleteTaskLogs": true para modificar a configuração da tarefa. Você pode usar o cron job para programar a execução periódica de modify-replication-task.

Use a API

Para excluir automaticamente os logs de tarefas do AWS DMS, crie um script para ser executado todos os dias ou na frequência desejada. O exemplo a seguir usa um código Python e do AWS Lambda para automatizar a exclusão dos logs de erros de uma tarefa usando o ARN da tarefa.

Configure a função do Lambda

Para configurar a função do Lambda, conclua as etapas a seguir:

1.    Abra o console do Lambda e selecione a região da AWS que contém seus recursos do DMS.

2.    No painel Funções, selecione Criar função.

3.    Insira um Nome da função.

4.    Em Runtime, selecione python 3.8.

5.    Em Alterar o perfil de execução padrão, selecione Criar um novo perfil com permissões básicas do Lambda. Anote o nome do perfil do AWS Identity and Access Management (IAM) criado pelo Lambda.

6.    Selecione Criar função.

7.    Abra o console do AWS IAM e abra o perfil do IAM criado pela função do Lambda.

8.    Para criar uma política do IAM, use o JSON a seguir. Substitua o ARN da tarefa de exemplo pelo ARN da sua tarefa:

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

9.    Anexe a política ao perfil criado pela função do Lambda.

10.    Abra o console do Lambda e selecione a função do Lambda que você criou.

11.    Em Código da função, insira o código a seguir e clique em Implantar:

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.    Selecione Testar e insira um Nome do evento mantendo o modelo padrão.

13.    Escolha Criar e selecione Testar novamente.

O status da tarefa do DMS muda para Em modificação. Ao mesmo tempo, os logs de erros de tarefas do DMS na instância de replicação foram excluídos.

Use o programador Lambda

Para usar o programador Lambda para automatizar os logs de erros de tarefas do DMS, conclua as seguintes etapas:

  1. Abra o console do Lambda e selecione a função do Lambda que você criou.
  2. Em Designer, selecione Adicionar gatilho.
  3. Na lista suspensa, selecione EventBridge (CloudWatch Events).
  4. EmRegra, selecione Criar uma regra.
  5. Insira o Nome da regra e a Descrição da regra.
  6. Em Expressão de programação, insira a expressão de taxa. Para obter mais informações, consulte Programar expressões usando rate ou cron.
  7. Escolha Adicionar.

Observação: você pode alterar e otimizar esse código. Você também pode usar o cron job ou o programador Lambda para programar a execução periódica desse script.

AWS OFICIAL
AWS OFICIALAtualizada há 6 meses