

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: operadores DAGs, conexões e outros problemas
<a name="t-apache-airflow-202"></a>

Os tópicos desta página descrevem soluções para dependências do Apache Airflow v2 e v3 Python, plug-ins DAGs personalizados, operadores, conexões, tarefas e problemas de servidor web que você pode encontrar em um ambiente Amazon Managed Workflows for Apache Airflow.

**Contents**
+ [Conexões](#troubleshooting-conn-202)
  + [Não consigo me conectar ao Secrets Manager](#access-secrets-manager)
  + [Como configuro as condições do gerenciador de segredos `secretsmanager:ResourceTag/<tag-key>` ou uma restrição de recursos na minha política de perfil de execução?](#access-secrets-manager-condition-keys)
  + [Não consigo me conectar ao Snowflake](#missing-snowflake)
  + [Não consigo encontrar minha conexão na IU do Airflow](#connection-type-missing)
+ [Webserver](#troubleshooting-webserver-202)
  + [Eu vejo um erro 5xx ao acessar o servidor Web](#5xx-webserver-202)
  + [Eu recebo um erro `The scheduler does not seem to be running`](#error-scheduler-202)
+ [Tarefas](#troubleshooting-tasks-202)
  + [Minhas tarefas travam ou não são concluídas](#stranded-tasks-202)
  + [Ocorrem falhas de tarefas sem logs no Airflow v3](#failed-task-no-log)
+ [CLI](#troubleshooting-cli-202)
  + [Ocorre um erro “503” ao acionar um DAG na CLI](#cli-toomany-202)
  + [Por que o comando da CLI `dags backfill` do Apache Airflow falha? Existe uma solução alternativa?](#troubleshooting-cli-backfill)
+ [Operadores](#troubleshooting-operators-202)
  + [Recebi um erro `PermissionError: [Errno 13] Permission denied` ao usar o operador S3Transform](#op-s3-transform)

## Conexões
<a name="troubleshooting-conn-202"></a>

O tópico a seguir descreve os erros que você pode receber ao usar uma conexão do Apache Airflow ou usar outro banco de dados. AWS 

### Não consigo me conectar ao Secrets Manager
<a name="access-secrets-manager"></a>

Recomendamos as seguintes etapas:

1. Aprenda a criar chaves secretas para sua conexão e variáveis do Apache Airflow em [Configurando uma conexão do Apache Airflow usando um segredo AWS Secrets Manager](connections-secrets-manager.md).

1. Saiba como usar a chave secreta para uma variável do Apache Airflow (`test-variable`) em [Como usar uma chave secreta em AWS Secrets Manager para uma variável do Apache Airflow](samples-secrets-manager-var.md).

1. Saiba como usar a chave secreta para uma conexão Apache Airflow (`myconn`) em [Como usar uma chave secreta em AWS Secrets Manager para uma conexão do Apache Airflow](samples-secrets-manager.md).

### Como configuro as condições do gerenciador de segredos `secretsmanager:ResourceTag/<tag-key>` ou uma restrição de recursos na minha política de perfil de execução?
<a name="access-secrets-manager-condition-keys"></a>

**nota**  
Aplica-se ao Apache Airflow versão 2.0 e anterior.

Atualmente, você não pode limitar o acesso aos segredos do Secrets Manager usando chaves de condição ou outras restrições de recursos no perfil de execução do seu ambiente, devido a um problema conhecido no Apache Airflow.

### Não consigo me conectar ao Snowflake
<a name="missing-snowflake"></a>

Recomendamos as seguintes etapas:

1. Teste seus DAGs plug-ins personalizados e dependências do Python localmente usando on. [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) GitHub

1. Adicione as seguintes entradas ao requirements.txt para seu ambiente.

   ```
   apache-airflow-providers-snowflake==1.3.0
   ```

1. Adicione as seguintes importações ao seu DAG:

   ```
   from airflow.providers.snowflake.operators.snowflake import SnowflakeOperator
   ```

Certifique-se de que o objeto de conexão Apache Airflow inclui os seguintes pares de chave-valor:

1. **ID de conexão: **snowflake\$1conn

1. **Tipo de conexão: **Snowflake

1. **Host: **<my account>.<my region if not us-west-2>.snowflakecomputing.com

1. **Esquema: **<my schema>

1. **Login: **<my user name>

1. **Senha: **\$1\$1\$1\$1\$1\$1\$1\$1

1. **Porta: ** <port, if any>

1. **Extra: **

   ```
   {
   						"account": "<my account>",
   						"warehouse": "<my warehouse>",
   						"database": "<my database>",
   						"region": "<my region if not using us-west-2 otherwise omit this line>"
   						}
   ```

Por exemplo:

```
>>> import json
				>>> from airflow.models.connection import Connection
				>>> myconn = Connection(
				...    conn_id='snowflake_conn',
				...    conn_type='Snowflake',
				...    host='123456789012.us-east-1.snowflakecomputing.com',
				...    schema='YOUR_SCHEMA'
				...    login='YOUR_USERNAME',
				...    password='YOUR_PASSWORD',
				...    port='YOUR_PORT'
				...    extra=json.dumps(dict(account='123456789012', warehouse='YOUR_WAREHOUSE', database='YOUR_DB_OPTION', region='us-east-1')),
				... )
```

### Não consigo encontrar minha conexão na IU do Airflow
<a name="connection-type-missing"></a>

O Apache Airflow fornece modelos de conexão na IU do Apache Airflow. Isto é usado para gerar a string do URI de conexão, independentemente do tipo de conexão. Se um modelo de conexão não estiver disponível na IU do Apache Airflow, um modelo de conexão alternativo poderá ser usado para gerar uma string de URI de conexão, como o uso do modelo de conexão HTTP.

Recomendamos as seguintes etapas:

1. Acesse os tipos de conexão que o Amazon MWAA fornece na IU do Apache Airflow em [Pacotes do provedor Apache Airflow instalados em ambientes Amazon MWAA](connections-packages.md).

1. Acesse os comandos para criar uma conexão do Apache Airflow na CLI em [Referência de comandos da CLI do Apache Airflow](airflow-cli-command-reference.md).

1. Aprenda a usar modelos de conexão na IU do Apache Airflow de forma intercambiável para tipos de conexão que não estão disponíveis na IU do Apache Airflow no Amazon MWAA em [Visão geral dos tipos de conexão](manage-connection-types.md).

## Webserver
<a name="troubleshooting-webserver-202"></a>

O tópico a seguir descreve os erros que você pode receber do servidor Web do Apache Airflow no Amazon MWAA.

### Eu vejo um erro 5xx ao acessar o servidor Web
<a name="5xx-webserver-202"></a>

Recomendamos as seguintes etapas:

1. Verifique as opções de configuração do Apache Airflow. Verifique se os pares de valores-chave que você especificou como uma opção de configuração do Apache Airflow, como AWS Secrets Manager, foram configurados corretamente. Consulte [Não consigo me conectar ao Secrets Manager](#access-secrets-manager) para saber mais.

1. Verifique `requirements.txt`. Verifique se o pacote “extras” do Airflow e outras bibliotecas listadas no seu `requirements.txt` são compatíveis com sua versão do Apache Airflow.

1. Explore formas de especificar dependências do Python em um arquivo `requirements.txt`, consulte [Como gerenciar dependências do Python em requirements.txt](best-practices-dependencies.md).

### Eu recebo um erro `The scheduler does not seem to be running`
<a name="error-scheduler-202"></a>

Se o agendador parecer não estar em execução ou se o último “batimento cardíaco” tiver sido recebido há várias horas, você DAGs pode não estar listado no Apache Airflow e novas tarefas não serão agendadas.

Recomendamos as seguintes etapas:

1. Confirme se seu grupo de segurança da VPC permite acesso de entrada à porta `5432`. Essa porta é necessária para se conectar ao banco de dados de metadados PostgreSQL do Amazon Aurora para seu ambiente. Depois que essa regra for adicionada, o Amazon MWAA levará alguns minutos até o erro desaparecer. Consulte [Segurança em sua VPC no Amazon MWAA](vpc-security.md) para saber mais.
**nota**  
O banco de dados Aurora PostgreSQL faz parte da arquitetura de serviços do [Amazon MWAA e não está disponível](what-is-mwaa.md#architecture-mwaa) no seu. Conta da AWS
Os erros relacionados ao banco de dados geralmente são um sintoma de falha do programador e não a causa raiz.

1. Se o programador não estiver em execução, pode ser devido a vários fatores, como [falhas na instalação de dependências](best-practices-dependencies.md) ou um [programador sobrecarregado](best-practices-tuning.md). Confirme se seus DAGs plug-ins e requisitos estão funcionando corretamente acessando os grupos de CloudWatch registros correspondentes em Registros. Consulte para saber mais: [Monitoramento e métricas para o Amazon Managed Workflows for Apache Airflow](cw-metrics.md).

## Tarefas
<a name="troubleshooting-tasks-202"></a>

O tópico a seguir descreve os erros que você pode receber nas tarefas do Apache Airflow em um ambiente.

### Minhas tarefas travam ou não são concluídas
<a name="stranded-tasks-202"></a>

Se suas tarefas do Apache Airflow estiverem “travadas” ou não estiverem sendo concluídas, recomendamos as seguintes etapas:

1. Pode haver um grande número de DAGs definidos. Reduza o número DAGs e realize uma atualização do ambiente (como alterar um nível de registro) para forçar uma redefinição.

   1. O Airflow analisa DAGs se eles estão habilitados ou não. Se você estiver usando mais de 50% da capacidade do seu ambiente, é possível começar a sobrecarregar o agendador do Apache Airflow. Isso leva a um grande *tempo total de análise* nas CloudWatch métricas ou a longos tempos de processamento do DAG nos CloudWatch registros. Há outras maneiras de otimizar as configurações do Apache Airflow que estão fora do escopo deste guia.

   1. Para saber mais sobre as práticas recomendadas para ajustar o desempenho do seu ambiente, consulte [Ajuste de desempenho para o Apache Airflow no Amazon MWAA](best-practices-tuning.md).

1. Pode haver um grande número de tarefas na fila. Isso geralmente é mostrado como um grande e crescente número de tarefas no `None` estado ou como um grande número em. `Queued Tasks` and/or `Tasks Pending` CloudWatch Este erro pode ocorrer pelos seguintes motivos:

   1. Se houver mais tarefas a serem executadas do que o ambiente tem a capacidade de executar, and/or um grande número de tarefas que estavam na fila antes do escalonamento automático tem tempo para detectá-las e implantar trabalhadores adicionais.

   1. Se houver mais tarefas para executar do que um ambiente tem a capacidade de executar, recomendamos **reduzir** o número de tarefas que você DAGs executa simultaneamente, and/or aumentando o número mínimo de trabalhadores do Apache Airflow.

   1. Se houver um grande número de tarefas que foram colocadas em fila antes que o escalonamento automático tivesse tempo de detectar e implantar trabalhadores adicionais, recomendamos **escalonar a implantação de tarefas, aumentando o número and/or mínimo de trabalhadores do Apache** Airflow.

   1. Você pode usar o comando [update-environment](https://docs.aws.amazon.com/cli/latest/reference/mwaa/update-environment.html) no AWS Command Line Interface (AWS CLI) para alterar o número mínimo ou máximo de trabalhadores que são executados em seu ambiente.

      ```
      aws mwaa update-environment --name MyEnvironmentName --min-workers 2 --max-workers 10
      ```

   1. Para saber mais sobre as práticas recomendadas para ajustar o desempenho do seu ambiente, consulte [Ajuste de desempenho para o Apache Airflow no Amazon MWAA](best-practices-tuning.md).

1. Se suas tarefas estiverem travadas no estado “em execução”, você também poderá limpá-las ou marcá-las como bem-sucedidas ou malsucedidas. Isso permite que o componente de ajuste de escala automático do seu ambiente reduza a escala verticalmente do número de operadores em execução no seu ambiente. A imagem a seguir mostra um exemplo de uma tarefa perdida.  
![\[Esta é uma imagem com uma tarefa perdida.\]](http://docs.aws.amazon.com/pt_br/mwaa/latest/userguide/images/mwaa-airflow-scaling.png)

   1. Escolha o círculo para a tarefa perdida e selecione **Limpar** (conforme mostrado). Isso permite que o Amazon MWAA reduza os trabalhadores; caso contrário, o Amazon MWAA não pode determinar quais DAGs estão ativados ou desativados e não pode reduzir a escala se ainda houver tarefas na fila.  
![\[Ações do Apache Airflow\]](http://docs.aws.amazon.com/pt_br/mwaa/latest/userguide/images/mwaa-airflow-scaling-menu.png)

1. Saiba mais sobre o ciclo de vida das tarefas do Apache Airflow em [Conceitos](https://airflow.apache.org/docs/apache-airflow/stable/concepts.html#task-lifecycle) no *Guia de referência do Apache Airflow*.

### Ocorrem falhas de tarefas sem logs no Airflow v3
<a name="failed-task-no-log"></a>

Se suas tarefas do Apache Airflow 3 estiverem falhando sem logs, siga estas etapas:
+ Se os logs do operador apresentarem um erro, como `Task handler raised error: WorkerLostError('Worker exited prematurely: exitcode 15 Job: 12.')` no momento em que a tarefa falhou, isso indica que o processo de trabalho bifurcado atribuído à tarefa provavelmente foi encerrado inesperadamente.

  Para resolver isso, configure celery.worker\$1autoscale com os mesmos valores mínimo e máximo. Por exemplo:

  ```
  celery.worker_autoscale=5,5  # for mw1.small
  celery.worker_autoscale=10,10 # for mw1.medium
  celery.worker_autoscale=20,20 # for mw1.large
  ```

  Isso garante que o tamanho do grupo de operadores permaneça fixo, evitando encerramentos inesperados de operadores.

## CLI
<a name="troubleshooting-cli-202"></a>

O tópico a seguir descreve os erros que você pode receber ao executar comandos da CLI do Airflow no AWS Command Line Interface.

### Ocorre um erro “503” ao acionar um DAG na CLI
<a name="cli-toomany-202"></a>

A CLI do Airflow é executada no servidor Web do Apache Airflow, que tem simultaneidade limitada. Normalmente, no máximo 4 comandos da CLI podem ser executados simultaneamente.

### Por que o comando da CLI `dags backfill` do Apache Airflow falha? Existe uma solução alternativa?
<a name="troubleshooting-cli-backfill"></a>

**nota**  
O seguinte se aplica somente aos ambientes Apache Airflow v2.0.2.

O `backfill` comando, como outros comandos da CLI do Apache Airflow, analisa DAGs tudo localmente antes de DAGs qualquer um ser processado, independentemente do DAG ao qual a operação da CLI se aplica. Em ambientes Amazon MWAA usando o Apache Airflow v2.0.2, como os plug-ins e os requisitos ainda não estão instalados no servidor Web no momento em que o comando CLI é executado, a operação de análise falha e a operação `backfill` não é invocada. Se você não tivesse nenhum requisito nem plug-ins em seu ambiente, a operação `backfill` seria bem-sucedida.

Para poder executar o comando da CLI `backfill`, recomendamos invocá-lo em um operador bash. Em um operador bash, `backfill` é iniciado pelo trabalhador, permitindo que ele analise com sucesso, pois todos os requisitos e plug-ins necessários estão disponíveis e instalados. DAGs Use o exemplo a seguir para criar um DAG com `BashOperator` para executar `backfill`.

```
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago

with DAG(dag_id="backfill_dag", schedule_interval=None, catchup=False, start_date=days_ago(1)) as dag:
    cli_command = BashOperator(
        task_id="bash_command",
        bash_command="airflow dags backfill my_dag_id"
    )
```

## Operadores
<a name="troubleshooting-operators-202"></a>

O tópico a seguir descreve os erros que você pode receber ao usar Operadores.

### Recebi um erro `PermissionError: [Errno 13] Permission denied` ao usar o operador S3Transform
<a name="op-s3-transform"></a>

Recomendamos as etapas a seguir se você estiver tentando executar um script de shell com o operador *S3Transform* e estiver recebendo um erro `PermissionError: [Errno 13] Permission denied`. As etapas a seguir pressupõem que você tenha um arquivo plugins.zip existente. Se você estiver criando um *novo* plugins.zip, consulte [Como instalar plug-ins personalizados](configuring-dag-import-plugins.md).

1. Teste seus DAGs plug-ins personalizados e dependências do Python localmente usando on. [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) GitHub

1. Crie seu script de “transform” (transformação).

   ```
   #!/bin/bash
   cp $1 $2
   ```

1. Opcional: os usuários do macOS e do Linux podem precisar executar o comando a seguir para garantir que o script seja executável.

   ```
   chmod 777 transform_test.sh
   ```

1. Adicione o script ao seu arquivo plugins.zip.

   ```
   zip plugins.zip transform_test.sh
   ```

1. Siga as etapas em [Carregar o plugins.zip para o Amazon S3](configuring-dag-import-plugins.md#configuring-dag-plugins-upload).

1. Siga as etapas em [Especificação da versão do plugins.zip no console do Amazon MWAA](configuring-dag-import-plugins.md#configuring-dag-plugins-s3-mwaaconsole).

1. Crie o seguinte DAG.

   ```
   from airflow import DAG
   						from airflow.providers.amazon.aws.operators.s3_file_transform import S3FileTransformOperator
   						from airflow.utils.dates import days_ago
   						import os
   						
   						DAG_ID = os.path.basename(__file__).replace(".py", "")
   						
   						with DAG (dag_id=DAG_ID, schedule_interval=None, catchup=False, start_date=days_ago(1)) as dag:
   						file_transform = S3FileTransformOperator(
   						task_id='file_transform',
   						transform_script='/usr/local/airflow/plugins/transform_test.sh',
   						source_s3_key='s3://amzn-s3-demo-bucket/files/input.txt',
   						dest_s3_key='s3://amzn-s3-demo-bucket/files/output.txt'
   						)
   ```

1. Siga as etapas em [Como fazer upload do código DAG para o Amazon S3](configuring-dag-folder.md#configuring-dag-folder-uploading).