Risoluzione dei problemi: DAG, operatori, connessioni e altri problemi in Apache Airflow v1 - Amazon Managed Workflows for Apache Airflow

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi: DAG, operatori, connessioni e altri problemi in Apache Airflow v1

Gli argomenti di questa pagina contengono le risoluzioni alle dipendenze di Apache Airflow v1.10.12 Python, ai plug-in personalizzati, ai DAG, agli operatori, alle connessioni, alle attività e ai problemi del server Web che potresti riscontrare in un ambiente Amazon Managed Workflows for Apache Airflow.

Aggiornamento di requirements.txt

L'argomento seguente descrive gli errori che potresti ricevere durante l'aggiornamento del tuorequirements.txt.

L'aggiuntaapache-airflow-providers-amazon causa il malfunzionamento del mio ambiente

apache-airflow-providers-xyzè compatibile solo con Apache Airflow v2. apache-airflow-backport-providers-xyzè compatibile con Apache Airflow 1.10.12.

DAG rotto

L'argomento seguente descrive gli errori che potresti ricevere durante l'esecuzione dei DAG.

Ho ricevuto un errore «Broken DAG» quando utilizzo gli operatori Amazon DynamoDB

È consigliabile eseguire le operazioni seguenti:

  1. Testa i tuoi DAG, i plugin personalizzati e le dipendenze Python localmente usando l'opzione aws-mwaa-local-runneronGitHub.

  2. Aggiungi il seguente pacchetto al tuorequirements.txt.

    boto
  3. Esplora i modi per specificare le dipendenze Python in unrequirements.txt file, vediGestione delle dipendenze Python in requirements.txt.

Ho ricevuto l'errore «Broken DAG: Nessun modulo chiamato psycopg2"

È consigliabile eseguire le operazioni seguenti:

  1. Testa i tuoi DAG, i plugin personalizzati e le dipendenze Python localmente usando l'opzione aws-mwaa-local-runneronGitHub.

  2. Aggiungi quanto segue al tuorequirements.txt con la tua versione di Apache Airflow. Ad esempio:

    apache-airflow[postgres]==1.10.12
  3. Esplora i modi per specificare le dipendenze Python in unrequirements.txt file, vediGestione delle dipendenze Python in requirements.txt.

Ho ricevuto un errore «Broken DAG» durante l'utilizzo degli operatori Slack

È consigliabile eseguire le operazioni seguenti:

  1. Testa i tuoi DAG, i plugin personalizzati e le dipendenze Python localmente usando l'opzione aws-mwaa-local-runneronGitHub.

  2. Aggiungi il seguente pacchetto al tuorequirements.txt e specifica la tua versione di Apache Airflow. Ad esempio:

    apache-airflow[slack]==1.10.12
  3. Esplora i modi per specificare le dipendenze Python in unrequirements.txt file, vediGestione delle dipendenze Python in requirements.txt.

Ho ricevuto vari errori durante l'installazione di Google/GCP/BigQuery

Amazon MWAA utilizza Amazon Linux che richiede una versione specifica di Cython e delle librerie di crittografia. È consigliabile eseguire le operazioni seguenti:

  1. Testa i tuoi DAG, i plugin personalizzati e le dipendenze Python localmente usando l'opzione aws-mwaa-local-runneronGitHub.

  2. Aggiungi il seguente pacchetto al tuorequirements.txt.

    grpcio==1.27.2 cython==0.29.21 pandas-gbq==0.13.3 cryptography==3.3.2 apache-airflow-backport-providers-amazon[google]
  3. Se non utilizzi provider di backport, puoi utilizzare:

    grpcio==1.27.2 cython==0.29.21 pandas-gbq==0.13.3 cryptography==3.3.2 apache-airflow[gcp]==1.10.12
  4. Esplora i modi per specificare le dipendenze Python in unrequirements.txt file, vediGestione delle dipendenze Python in requirements.txt.

Ho ricevuto l'errore «Broken DAG: Nessun modulo chiamato Cython»

Amazon MWAA utilizza Amazon Linux che richiede una versione specifica di Cython. È consigliabile eseguire le operazioni seguenti:

  1. Testa i tuoi DAG, i plugin personalizzati e le dipendenze Python localmente usando l'opzione aws-mwaa-local-runneronGitHub.

  2. Aggiungi il seguente pacchetto al tuorequirements.txt.

    cython==0.29.21
  3. Le librerie Cython hanno varie versioni di dipendenza pip richieste. Ad esempio, utilizzando requireawswrangler==2.4.0pyarrow<3.1.0,>=2.0.0, pip3 tenta di eseguire l'installazione, ilpyarrow==3.0.0 che causa un errore Broken DAG. Si consiglia di specificare esplicitamente la versione più vecchia accettabile. Ad esempio, se si specifica il valore minimopyarrow==2.0.0 primaawswrangler==2.4.0, l'errore scompare e l'requirements.txtinstallazione viene eseguita correttamente. I requisiti finali dovrebbero apparire come segue:

    cython==0.29.21 pyarrow==2.0.0 awswrangler==2.4.0
  4. Esplora i modi per specificare le dipendenze Python in unrequirements.txt file, vediGestione delle dipendenze Python in requirements.txt.

Operatori

L'argomento seguente descrive gli errori che potresti ricevere quando usi gli operatori.

Ho ricevuto un errore utilizzando l'BigQueryoperatore

Amazon MWAA non supporta gli operatori con estensioni dell'interfaccia utente. È consigliabile eseguire le operazioni seguenti:

  1. Testa i tuoi DAG, i plugin personalizzati e le dipendenze Python localmente usando l'opzione aws-mwaa-local-runneronGitHub.

  2. Una soluzione alternativa consiste nell'ignorare l'estensione aggiungendo una riga nel DAG da impostare<operator name>.operator_extra_links = None dopo aver importato gli operatori problematici. Ad esempio:

    from airflow.contrib.operators.bigquery_operator import BigQueryOperator BigQueryOperator.operator_extra_links = None
  3. Puoi utilizzare questo approccio per tutti i DAG aggiungendo quanto sopra a un plugin. Per un esempio, consulta Creazione di un plugin personalizzato per Apache AirflowPythonVirtualenvOperator.

Connessioni

L'argomento seguente descrive gli errori che potresti ricevere quando usi una connessione Apache Airflow o usi un altroAWS database.

Non riesco a connettermi a Snowflake

È consigliabile eseguire le operazioni seguenti:

  1. Testa i tuoi DAG, i plugin personalizzati e le dipendenze Python localmente usando l'opzione aws-mwaa-local-runneronGitHub.

  2. Aggiungi le seguenti voci a requirements.txt per il tuo ambiente.

    asn1crypto == 0.24.0 snowflake-connector-python == 1.7.2
  3. Aggiungi le seguenti importazioni al tuo DAG:

    from airflow.contrib.hooks.snowflake_hook import SnowflakeHook from airflow.contrib.operators.snowflake_operator import SnowflakeOperator

Assicurati che l'oggetto di connessione Apache Airflow includa le seguenti coppie chiave-valore:

  1. ID di connessione: snowflake_conn

  2. Tipo di connettore: Snowflake

  3. Ospite:<my account>. <my region if not us-west-2>.snowflakecomputing.com

  4. Schema: <my schema>

  5. Accedi: <my user name>

  6. Password: ********

  7. Porta: <port, if any>

  8. Extra:

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

Ad esempio:

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

Non riesco a connettermi a Secrets Manager

È consigliabile eseguire le operazioni seguenti:

  1. Scopri come creare chiavi segrete per la connessione e le variabili di Apache Airflow inConfigurazione di una connessione Apache Airflow utilizzando un segreto AWS Secrets Manager.

  2. Scopri come usare la chiave segreta per una variabile Apache Airflow (test-variable) inUtilizzo di una chiave segreta inAWS Secrets Managerper una variabile Apache Airflow.

  3. Scopri come usare la chiave segreta per una connessione Apache Airflow (myconn) inUtilizzo di una chiave segreta inAWS Secrets Managerper una connessione Apache Airflow.

Non riesco a connettermi al mio server MySQL su '<DB-identifier-name>.cluster-id. <region>.rds.amazonaws.com»

Il gruppo di sicurezza di Amazon MWAA e il gruppo di sicurezza RDS necessitano di una regola di ingresso per consentire il traffico da e verso l'altro. È consigliabile eseguire le operazioni seguenti:

  1. Modifica il gruppo di sicurezza RDS per consentire tutto il traffico proveniente dal gruppo di sicurezza VPC di Amazon MWAA.

  2. Modifica il gruppo di sicurezza VPC di Amazon MWAA per consentire tutto il traffico dal gruppo di sicurezza RDS.

  3. Riesegui nuovamente le attività e verifica se la query SQL ha avuto successo controllando i log di Apache Airflow inCloudWatch Logs.

Server Web

L'argomento seguente descrive gli errori che potresti ricevere per il tuo server Web Apache Airflow su Amazon MWAA.

Sto usando ilBigQueryOperator e sta causando il crash del mio server web

È consigliabile eseguire le operazioni seguenti:

  1. Gli operatori di Apache Airflow comeBigQueryOperator eQuboleOperator che contengonooperator_extra_links potrebbero causare l'arresto anomalo del server web Apache Airflow. Questi operatori tentano di caricare codice sul tuo server web, cosa non consentita per motivi di sicurezza. Ti consigliamo di applicare le patch agli operatori nel tuo DAG aggiungendo il seguente codice dopo le dichiarazioni di importazione:

    BigQueryOperator.operator_extra_links = None
  2. Testa i tuoi DAG, i plugin personalizzati e le dipendenze Python localmente usando l'opzione aws-mwaa-local-runneronGitHub.

Vedo un errore 5xx durante l'accesso al server Web

È consigliabile eseguire le operazioni seguenti:

  1. Controlla le opzioni di configurazione di Apache Airflow. Verifica che le coppie chiave-valore che hai specificato come opzione di configurazione di Apache Airflow, ad esempioAWS Secrets Manager, siano state configurate correttamente. Per ulteriori informazioni, consulta Non riesco a connettermi a Secrets Manager.

  2. Controlla ilrequirements.txt. Verifica che il pacchetto «extra» di Airflow e le altre librerie elencate nel tuorequirements.txt siano compatibili con la tua versione di Apache Airflow.

  3. Esplora i modi per specificare le dipendenze Python in unrequirements.txt file, vediGestione delle dipendenze Python in requirements.txt.

Viene visualizzato l'errore «Lo scheduler sembra non essere in esecuzione»

Se lo scheduler non sembra essere in esecuzione o l'ultimo «battito cardiaco» è stato ricevuto diverse ore fa, i DAG potrebbero non essere visualizzati in Apache Airflow e le nuove attività non verranno pianificate.

È consigliabile eseguire le operazioni seguenti:

  1. Verifica che il tuo gruppo di sicurezza VPC consenta l'accesso in entrata alla porta5432. Questa porta è necessaria per connettersi al database di metadati Amazon Aurora PostgreSQL per il tuo ambiente. Dopo aver aggiunto questa regola, concedi ad Amazon MWAA alcuni minuti e l'errore dovrebbe scomparire. Per ulteriori informazioni, consulta Sicurezza nel tuo VPC su Amazon MWAA.

    Nota
    • Il metadatabase Aurora PostgreSQL fa parte dell'architettura del servizio Amazon MWAA e non è visibile nel tuoAccount AWS.

    • Gli errori relativi al database sono in genere un sintomo di un errore dello scheduler e non la causa principale.

  2. Se lo scheduler non è in esecuzione, potrebbe essere dovuto a una serie di fattori come errori di installazione delle dipendenze o un programma di pianificazione sovraccarico. Verifica che i DAG, i plugin e i requisiti funzionino correttamente visualizzando i gruppi di log corrispondenti inCloudWatch Logs. Per ulteriori informazioni, consulta Monitoraggio e parametri per Amazon Managed Workflows for Apache Airflow.

Processi

L'argomento seguente descrive gli errori che potresti ricevere per le attività di Apache Airflow in un ambiente.

Vedo che le mie attività sono bloccate o non vengono completate

Se le tue attività di Apache Airflow sono «bloccate» o non vengono completate, ti consigliamo i seguenti passaggi:

  1. È possibile che sia definito un numero elevato di DAG. Riduci il numero di DAG ed esegui un aggiornamento dell'ambiente (ad esempio modificando un livello di registro) per forzare il ripristino.

    1. Airflow analizza i DAG indipendentemente dal fatto che siano abilitati o meno. Se stai utilizzando più del 50% della capacità del tuo ambiente, potresti iniziare a sovraccaricare l'Apache Airflow Scheduler. Ciò comporta un tempo totale di analisi elevato nelleCloudWatch metriche o lunghi tempi di elaborazione DAG neiCloudWatch log. Esistono altri modi per ottimizzare le configurazioni di Apache Airflow che non rientrano nell'ambito di questa guida.

    2. Per ulteriori informazioni sulle best practice che consigliamo per ottimizzare le prestazioni del tuo ambiente, consultaOttimizzazione delle prestazioni per Apache Airflow su Amazon MWAA.

  2. È possibile che ci sia un gran numero di attività in coda. Questo appare spesso come un numero elevato e crescente di attività nello stato «Nessuna» o come un numero elevato in Attività in coda e/o Attività in sospesoCloudWatch. Questo può accadere per i seguenti motivi:

    1. Se ci sono più attività da eseguire rispetto alla capacità dell'ambiente e/o un numero elevato di attività messe in coda prima della scalabilità automatica ha il tempo di rilevare le attività e distribuire Worker aggiuntivi.

    2. Se ci sono più attività da eseguire di quante un ambiente sia in grado di eseguire, si consiglia di ridurre il numero di attività eseguite contemporaneamente dai DAG e/o di aumentare il numero minimo di Apache Airflow Worker.

    3. Se ci sono molte attività in coda prima che la scalabilità automatica abbia avuto il tempo di rilevare e distribuire altri lavoratori, consigliamo di scaglionare la distribuzione delle attività e/o aumentare il numero minimo di Apache Airflow Workers.

    4. È possibile utilizzare il comando update-environment inAWS Command Line Interface (AWS CLI) per modificare il numero minimo o massimo di Worker eseguiti nel proprio ambiente.

      aws mwaa update-environment --name MyEnvironmentName --min-workers 2 --max-workers 10
    5. Per ulteriori informazioni sulle best practice che consigliamo per ottimizzare le prestazioni del tuo ambiente, consultaOttimizzazione delle prestazioni per Apache Airflow su Amazon MWAA.

  3. È possibile che alcune attività vengano eliminate durante l'esecuzione che appaiono come registri delle attività che si interrompono senza ulteriori indicazioni in Apache Airflow. Questo può accadere per i seguenti motivi:

    1. Se c'è un breve momento in cui 1) le attività correnti superano la capacità attuale dell'ambiente, seguite da 2) alcuni minuti senza esecuzione o in coda, quindi 3) nuove attività in coda.

    2. La scalabilità automatica di Amazon MWAA reagisce al primo scenario aggiungendo altri lavoratori. Nel secondo scenario, rimuove i lavoratori aggiuntivi. Alcune delle attività in coda possono comportare la rimozione dei lavoratori e terminare quando il contenitore viene eliminato.

    3. Ti consigliamo di aumentare il numero minimo di lavoratori nel tuo ambiente. Un'altra opzione è modificare la tempistica dei DAG e delle attività per garantire che questi scenari non si verifichino.

    4. Puoi anche impostare il numero minimo di lavoratori pari al numero massimo di lavoratori nel tuo ambiente, disattivando in modo efficace la scalabilità automatica. Usa il comando update-environment inAWS Command Line Interface (AWS CLI) per disabilitare la scalabilità automatica impostando lo stesso numero minimo e massimo di lavoratori.

      aws mwaa update-environment --name MyEnvironmentName --min-workers 5 --max-workers 5
    5. Per ulteriori informazioni sulle best practice che consigliamo per ottimizzare le prestazioni del tuo ambiente, consultaOttimizzazione delle prestazioni per Apache Airflow su Amazon MWAA.

  4. Se le tue attività sono bloccate nello stato «in esecuzione», puoi anche cancellarle o contrassegnarle come riuscite o non riuscite. Ciò consente al componente di scalabilità automatica del tuo ambiente di ridurre il numero di lavoratori in esecuzione nell'ambiente. La seguente immagina mostra un esempio di operazione bloccata.

    Questa è un'immagine con un compito bloccato.
    1. Scegli il cerchio per l'attività bloccata, quindi seleziona Cancella (come mostrato). Ciò consente ad Amazon MWAA di ridurre il numero di dipendenti; in caso contrario, Amazon MWAA non può determinare quali DAG sono abilitati o disattivati e non può ridimensionare se ci sono ancora attività in coda.

      Azioni Apache Airflow
  5. Scopri di più sul ciclo di vita delle attività di Apache Airflow in Concepts nella guida di riferimento di Apache Airflow.

CLI

L'argomento seguente descrive gli errori che potresti ricevere quando esegui i comandi della CLI di Airflow inAWS Command Line Interface.

Vedo un errore '503' quando si attiva un DAG nella CLI

L'interfaccia a riga di comando di Airflow viene eseguita sul server Web Apache Airflow, che ha una concorrenza limitata. In genere è possibile eseguire contemporaneamente un massimo di 4 comandi CLI.