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 resoluções para 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 registros do Apache Airflow.

Não consigo encontrar meus registros de tarefas ou recebi um Reading remote log from Cloudwatch log_group erro

O Amazon MWAA configurou o Apache Airflow para ler e gravar registros diretamente de e para o Amazon Logs. CloudWatch Se um trabalhador falhar ao iniciar uma tarefa ou não conseguir gravar nenhum registro, você se referirá ao 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 o. 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 registro das tarefas com falha, verifique se você está definindo o queue parâmetro nos argumentos padrão, conforme listado 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" }

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

  • Adicione a seguinte biblioteca ao seu requirements.txt.

    watchtower==1.0.6

Eu recebo um Invalid request erro 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 Amazon S3 usando o AWS CloudFormation mesmo modelo, você precisa adicionar DependsOn uma seção 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 DependsOn declaração ao seu AWS 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, consulteTutoriais de início rápido para Amazon Managed Workflows for Apache Airflow.

Eu entro Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory nos registros do Apache Airflow

Recebo psycopg2 'o servidor fechou a conexão inesperadamente' nos meus registros do agendador

Se você receber um erro semelhante ao seguinte, 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 atualizar para o Apache Airflow v2.0.2, que você pode usar para especificar até 5 agendadores.

Eu entro Executor reports task instance %s finished (%s) although the task says its %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 a pesquisa Apache Airflow Sensors para verificar quando está concluída. Se um sensor falhar, ele poderá ser repetido com segurança sem afetar a funcionalidade do operador.

Eu entro Could not read remote logs from log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log. nos meus registros de tarefas

Se você receber um erro semelhante ao seguinte, a função de execução do seu ambiente pode não conter uma política de permissões para criar fluxos de log para registros 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, talvez tenha especificado um pacote, como o pacote, que só é compatível com apache-airflow-providers-databrickso 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 on. aws-mwaa-docker-images GitHub