View a markdown version of this page

Solução de problemas: CloudWatch registros e CloudTrail erros - 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: CloudWatch registros e CloudTrail erros

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

Logs

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

Não consigo encontrar meus registros de tarefas ou recebi um erro de leitura remota do log log_group do Cloudwatch

O Amazon MWAA configurou o Apache Airflow para ler e gravar registros diretamente de e para o Amazon Logs. CloudWatch Se um operador falhar ao iniciar uma tarefa ou não conseguir gravar nenhum log, você terá 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 Acessando os registros do Airflow 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 aws-mwaa-docker-images.

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.

Eu recebo um ResourceAlreadyExistsException erro em CloudTrail

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

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

  • Adicione a seguinte biblioteca ao seu requirements.txt.

    watchtower==1.0.6

Recebo um erro de solicitação inválida em 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 do Amazon S3 usando o mesmo CloudFormation modelo, precisará adicionar uma DependsOn seção dentro do seu modelo. CloudFormation Os dois recursos (MWAA Environment e MWAA Execution Policy) têm uma dependência em CloudFormation. Recomendamos as seguintes etapas:

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

    ... 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 obter um exemplo, consulte Tutoriais de início rápido para Amazon Managed Workflows for Apache Airflow.

Recebo Não é possível localizar uma biblioteca de cliente Oracle de 64 bits: “libclntsh.so: não é possível abrir o arquivo de objeto compartilhado: esse arquivo ou diretório não existe nos registros do Apache Airflow

Recebo psycopg2 “o servidor fechou a conexão inesperadamente” nos meus logs do agendador

Se você receber 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 você pode usar para especificar até 5 agendadores.

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

Se você receber 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 os sensores do Apache Airflow pesquisam para verificar quando estão concluídas. Se um sensor falhar, ele poderá ser repetido com segurança sem afetar a funcionalidade do operador.

Os registros do acionador não aparecem no Fluxo de ar Interface do usuário

Se os registros do acionador não aparecerem na interface do usuário do Apache Airflow, sua função de execução pode não ter a permissão. logs:DescribeLogStreams Sem essa permissão, o Amazon MWAA não pode descobrir fluxos de log acionadores. Nenhum erro aparece nos registros, o que pode dificultar a identificação desse problema.

Adicione logs:DescribeLogStreams à sua função de execução. Defina o escopo da permissão para o ARN do grupo de registros do seu ambiente. Para obter mais informações, consulte Perfil de execução do Amazon MWAA.

nota

Esse problema afeta seu ambiente se você usar o Apache Airflow versão 3.x com operadores adiáveis. Se você criou sua função de execução no console antes que a função padrão incluísse essa permissão, adicione-a manualmente.

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

Se você tiver 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 arquivo requirements.txt 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-docker-images on. GitHub