Solução de problemas: erros do CloudWatch Logs e do CloudTrail - Amazon Managed Workflows for Apache Airflow

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Solução de problemas: erros do CloudWatch Logs e do CloudTrail

Os tópicos desta página contêm resoluções para o Amazon CloudWatch Logs e erros AWS CloudTrail que você pode encontrar em um ambiente Amazon Managed Workflows for Apache Airflow.

Logs

O tópico a seguir descreve os erros que você pode receber ao visualizar os logs do Apache Airflow.

Não consigo ver meus registros de tarefas ou recebi o erro “Lendo o log remoto do Cloudwatch log_group”

O Amazon MWAA configurou o Apache Airflow para ler e gravar logs diretamente de e para o Amazon CloudWatch Logs. Se um operador falhar ao iniciar uma tarefa ou não conseguir gravar nenhum log, você verá o erro:

*** Reading remote log from Cloudwatch log_group: airflow-environmentName-Task log_stream: DAG_ID/TASK_ID/timestamp/n.log.Could not read remote logs from log_group: airflow-environmentName-Task log_stream: DAG_ID/TASK_ID/time/n.log.
  • Recomendamos as seguintes etapas:

    1. Verifique se você ativou os logs de tarefas no nível INFO do seu ambiente. Para obter mais informações, consulte Visualizando registros de fluxo de ar na Amazon CloudWatch.

    2. Verifique se o perfil de execução do ambiente tem as políticas de permissão corretas.

    3. Verifique se seu operador ou tarefa está funcionando corretamente, tem recursos suficientes para analisar o DAG e tem as bibliotecas Python apropriadas para carregar. Para verificar se você tem as dependências corretas, tente eliminar as importações até encontrar a que está causando o problema. Recomendamos testar suas dependências do Python usando a ferramenta Amazon MWAA local-runner.

As tarefas estão falhando sem nenhum log

Se as tarefas estiverem falhando em um fluxo de trabalho e você não conseguir localizar nenhum log das tarefas com falha, verifique se você está definindo o parâmetro queue em seus argumentos padrão, conforme mostrado a seguir.

from airflow import DAG from airflow.operators.bash_operator import BashOperator from airflow.utils.dates import days_ago # Setting queue argument to default. default_args = { "start_date": days_ago(1), "queue": "default" } with DAG(dag_id="any_command_dag", schedule_interval=None, catchup=False, default_args=default_args) as dag: cli_command = BashOperator( task_id="bash_command", bash_command="{{ dag_run.conf['command'] }}" )

Para resolver o problema, remova queue do seu código e invoque o DAG novamente.

Vejo um erro “ResourceAlreadyExistsException” no CloudTrail

"errorCode": "ResourceAlreadyExistsException", "errorMessage": "The specified log stream already exists", "requestParameters": { "logGroupName": "airflow-MyAirflowEnvironment-DAGProcessing", "logStreamName": "scheduler_cross-account-eks.py.log" }

Certos requisitos do Python, como apache-airflow-backport-providers-amazon reverter a biblioteca watchtower que o Amazon MWAA usa para se comunicar com o CloudWatch para uma versão mais antiga. Recomendamos as seguintes etapas:

  • Adicione a seguinte biblioteca ao seu requirements.txt.

    watchtower==1.0.6

Eu vejo um erro de “Solicitação inválida” no CloudTrail

Invalid request provided: Provided role does not have sufficient permissions for s3 location airflow-xxx-xxx/dags

Se você estiver criando um ambiente Amazon MWAA e um bucket Amazon S3 usando o mesmo modelo AWS CloudFormation, você precisa adicionar uma seção DependsOn dentro do seu modelo AWS CloudFormation. Os dois recursos (MWAA Environment e MWAA Execution Policy) têm uma dependência em AWS CloudFormation. Recomendamos as seguintes etapas:

  • Adicione a seguinte declaração DependsOn ao seu modelo AWS CloudFormation.

    ... MaxWorkers: 5 NetworkConfiguration: SecurityGroupIds: - !GetAtt SecurityGroup.GroupId SubnetIds: !Ref subnetIds WebserverAccessMode: PUBLIC_ONLY DependsOn: MwaaExecutionPolicy MwaaExecutionPolicy: Type: AWS::IAM::ManagedPolicy Properties: Roles: - !Ref MwaaExecutionRole PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: airflow:PublishMetrics Resource: ...

    Para ver um exemplo, consulte Tutoriais de início rápido para Amazon Managed Workflows for Apache Airflow.

Eu vejo uma mensagem “Não é possível localizar uma biblioteca Oracle Client de 64 bits: “libclntsh.so: não é possível abrir o arquivo de objeto compartilhado: esse arquivo ou diretório não existe” nos logs do Apache Airflow

Vejo psycopg2 'o servidor fechou a conexão inesperadamente' nos meus logs do Agendador

Se você vir um erro semelhante a esse, seu agendador do Apache Airflow pode ter ficado sem recursos.

2021-06-14T10:20:24.581-05:00 sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) server closed the connection unexpectedly 2021-06-14T10:20:24.633-05:00 This probably means the server terminated abnormally 2021-06-14T10:20:24.686-05:00 before or while processing the request.

Recomendamos as seguintes etapas:

  • Considere a atualização para o Apache Airflow v2.0.2, que permite especificar até 5 agendadores.

Vejo “O executor relata a instância da tarefa %s concluída (%s), embora a tarefa diga que é %s” nos meus registros de processamento do DAG

Se você ver um erro semelhante ao seguinte, suas tarefas de longa execução podem ter atingido o limite de tempo da tarefa no Amazon MWAA. O Amazon MWAA tem um limite de 12 horas para qualquer tarefa do Airflow, para evitar que as tarefas fiquem presas na fila e bloqueiem atividades como escalonamento automático.

Executor reports task instance %s finished (%s) although the task says its %s. (Info: %s) Was the task killed externally

Recomendamos as seguintes etapas:

  • Considere dividir a tarefa em várias tarefas de execução mais curtas. O Airflow normalmente tem um modelo em que os operadores são assíncronos. Ele invoca atividades em sistemas externos e a pesquisa Apache Airflow Sensors para ver quando está concluída. Se um sensor falhar, ele poderá ser repetido com segurança sem afetar a funcionalidade do operador.

Eu vejo 'Não foi possível ler os logs remotos do log_group: airflow-* {*environmentName} -Task log_stream: * {*DAG_ID} /* {*TASK_ID} /* {*time} /* {*n} .log. ' nos meus logs de tarefas

Se você ver um erro semelhante ao que se segue, o perfil de execução do seu ambiente pode não conter uma política de permissões para criar fluxos de log para logs de tarefas.

Could not read remote logs from log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log.

Recomendamos as seguintes etapas:

Você também pode ter especificado um pacote de provedor em seu requirements.txt arquivo que é incompatível com sua versão do Apache Airflow. Por exemplo, se você estiver usando o Apache Airflow v2.0.2, você pode ter especificado um pacote, como o pacote apache-airflow-providers-databricks, que só é compatível com o Airflow 2.1+.

Recomendamos as seguintes etapas:

  1. Se você estiver usando o Apache Airflow v2.0.2, modifique o requirements.txt arquivo e adicione apache-airflow[databricks]. Isso instala a versão correta do pacote Databricks que é compatível com o Apache Airflow v2.0.2.

  2. Teste seus DAGs, plug-ins personalizados e dependências do Python localmente usando aws-mwaa-local-runner no GitHub.