View a markdown version of this page

Risoluzione dei problemi: DAG, operatori, connessioni e altri problemi - 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

Gli argomenti di questa pagina descrivono le risoluzioni alle dipendenze Python di Apache Airflow v2 e v3, i plug-in personalizzati, i DAG, gli operatori, le connessioni, le attività e i problemi del server web che puoi riscontrare in un ambiente Amazon Managed Workflows for Apache Airflow.

Connessioni

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

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 in. Configurazione di una connessione Apache Airflow utilizzando un AWS Secrets Manager Secret

  2. Scopri come usare la chiave segreta per una variabile Apache Airflow () in. test-variable Utilizzo di una chiave segreta AWS Secrets Manager per una variabile Apache Airflow

  3. Scopri come usare la chiave segreta per una connessione Apache Airflow () in. myconn Utilizzo di una chiave segreta AWS Secrets Manager per una connessione Apache Airflow

Come posso configurare le condizioni di secretsmanager:ResourceTag/<tag-key > secret manager o una restrizione delle risorse nella mia politica del ruolo di esecuzione?

Nota

Si applica a Apache Airflow versione 2.0 e precedenti.

Attualmente, non è possibile limitare l'accesso ai segreti di Secrets Manager utilizzando chiavi di condizione o altre restrizioni delle risorse nel ruolo di esecuzione dell'ambiente, a causa di un problema noto in Apache Airflow.

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 aws-mwaa-docker-images on. https://github.com/aws/amazon-mwaa-docker-images GitHub

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

    apache-airflow-providers-snowflake==1.3.0
  3. Aggiungete le seguenti importazioni al vostro DAG:

    from airflow.providers.snowflake.operators.snowflake 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 connessione: Snowflake

  3. <my account>Ospite:. <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='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')), ... )

Non riesco a trovare la mia connessione nell'interfaccia utente di Airflow

Apache Airflow fornisce modelli di connessione nell'interfaccia utente di Apache Airflow. Lo utilizza per generare la stringa URI di connessione, indipendentemente dal tipo di connessione. Se un modello di connessione non è disponibile nell'interfaccia utente di Apache Airflow, è possibile utilizzare un modello di connessione alternativo per generare una stringa URI di connessione, ad esempio utilizzando il modello di connessione HTTP.

È consigliabile eseguire le operazioni seguenti:

  1. Accedi ai tipi di connessione forniti da Amazon MWAA nell'interfaccia utente di Apache Airflow all'indirizzo. Pacchetti del provider Apache Airflow installati in ambienti Amazon MWAA

  2. Accedi ai comandi per creare una connessione Apache Airflow nella CLI all'indirizzo. Riferimento al comando CLI di Apache Airflow

  3. Scopri come utilizzare i modelli di connessione nell'interfaccia utente di Apache Airflow in modo intercambiabile per i tipi di connessione che non sono disponibili nell'interfaccia utente di Apache Airflow su Amazon MWAA all'indirizzo. Panoramica dei tipi di connessione

Server Web

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

Ricevo 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 specificate come opzione di configurazione di Apache Airflow, ad esempio, siano state configurate correttamente. AWS Secrets Manager Per ulteriori informazioni, fare riferimento a. Non riesco a connettermi a Secrets Manager

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

  3. Esplorate i modi per specificare le dipendenze di Python in un file, consultate. requirements.txt Gestione delle dipendenze Python in requirements.txt

Ricevo un errore Lo scheduler non sembra funzionare

Se lo scheduler non sembra essere in esecuzione o l'ultimo «battito cardiaco» è stato ricevuto diverse ore fa, i tuoi DAG potrebbero non essere elencati 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 porta. 5432 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 qualche minuto e l'errore può 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 è disponibile nel tuo. Account AWS

    • Database-related gli errori sono in genere un sintomo del fallimento 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 sovraccarico dello scheduler. Ottimizzazione delle prestazioni per Apache Airflow su Amazon MWAA Verifica che i DAG, i plug-in e i requisiti funzionino correttamente accedendo ai gruppi di log corrispondenti in Logs. CloudWatch Per saperne di più, fai riferimento a. Monitoraggio e metriche per Amazon Managed Workflows for Apache Airflow

Processi

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

Le mie attività si bloccano o non vengono completate

Se le attività di Apache Airflow sono «bloccate» o non vengono completate, 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 la modifica di un livello di registro) per forzare un ripristino.

    1. Airflow analizza i DAG indipendentemente dal fatto che siano abilitati o meno. Se state utilizzando più del 50% della capacità del vostro ambiente, potreste iniziare a sovraccaricare lo scheduler di Apache Airflow. Ciò comporta un tempo totale di analisi elevato nelle CloudWatch metriche o lunghi tempi di elaborazione del DAG nei log. CloudWatch Esistono altri modi per ottimizzare le configurazioni di Apache Airflow che non rientrano nell'ambito di questa guida.

    2. Per saperne di più sulle best practice consigliate per ottimizzare le prestazioni del vostro ambiente, fate riferimento a. Ottimizzazione delle prestazioni per Apache Airflow su Amazon MWAA

  2. È possibile che ci sia un numero elevato di attività in coda. Questo è spesso indicato come un numero elevato e crescente di attività None nello stato o come un numero elevato in. Queued Tasks and/or Tasks Pending CloudWatch Ciò può verificarsi per i seguenti motivi:

    1. Se ci sono più attività da eseguire rispetto alla capacità dell'ambiente, and/or molte attività che erano in coda prima della scalabilità automatica hanno il tempo di rilevarle e impiegare personale aggiuntivo.

    2. Se ci sono più attività da eseguire rispetto alla capacità di esecuzione di un ambiente, consigliamo di ridurre il numero di attività eseguite contemporaneamente dai DAG, aumentando il numero minimo di lavoratori Apache Airflow. and/or

    3. Se ci sono molte attività in coda prima che l'autoscaling avesse il tempo di rilevare e distribuire altri lavoratori, consigliamo di suddividere la distribuzione delle attività aumentando il numero minimo di lavoratori di Apache Airflow. and/or

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

      aws mwaa update-environment --name MyEnvironmentName --min-workers 2 --max-workers 10
    5. Per ulteriori informazioni sulle best practice consigliate per ottimizzare le prestazioni dell'ambiente, fate riferimento a. Ottimizzazione delle prestazioni per Apache Airflow su Amazon MWAA

  3. Se le attività sono bloccate nello stato «in esecuzione», puoi anche cancellarle o contrassegnarle come riuscite o fallite. Ciò consente al componente di scalabilità automatica dell'ambiente di ridurre il numero di lavoratori in esecuzione nell'ambiente. L'immagine seguente illustra un esempio di attività bloccata.

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

      Azioni Apache Airflow
  4. Per saperne di più sul ciclo di vita delle attività di Apache Airflow, consulta Concepts nella guida di riferimento di Apache Airflow.

Ricevo errori nelle attività senza effettuare i log in Airflow v3

Se le tue attività di Apache Airflow 3 falliscono senza registri, segui questi passaggi:

  • Se i log di lavoro presentano un errore, ad esempio nel momento Task handler raised error: WorkerLostError('Worker exited prematurely: exitcode 15 Job: 12.') in cui l'attività è fallita, ciò indica che il processo di lavoro biforcato assegnato all'attività è stato probabilmente terminato in modo imprevisto.

    Per risolvere questo problema, considera la possibilità di configurare celery.worker_autoscale con gli stessi valori minimi e massimi. Ad esempio:

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

    Ciò garantisce che la dimensione del pool di lavoratori rimanga fissa, evitando licenziamenti imprevisti dei lavoratori.

CLI

L'argomento seguente descrive gli errori che potresti ricevere durante l'esecuzione dei comandi CLI Airflow in. AWS Command Line Interface

Ricevo un errore «503" quando si attiva un DAG nella CLI

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

Perché il comando dags backfill Apache Airflow CLI ha esito negativo? C'è una soluzione alternativa?

Nota

Quanto segue si applica solo agli ambienti Apache Airflow v2.0.2.

Il backfill comando, come altri comandi CLI di Apache Airflow, analizza tutti i DAG localmente prima che i DAG vengano elaborati, indipendentemente dal DAG a cui si applica l'operazione CLI. Negli ambienti Amazon MWAA che utilizzano Apache Airflow v2.0.2, poiché i plug-in e i requisiti non sono ancora installati sul server web al momento dell'esecuzione del comando CLI, l'operazione di analisi ha esito negativo e l'operazione non viene richiamata. backfill Se non avessi requisiti né plug-in nel tuo ambiente, l'operazione avrebbe esito positivo. backfill

Per poter eseguire il comando backfill CLI, consigliamo di invocarlo in un operatore bash. In un operatore bash, backfill viene avviato dal worker, consentendo ai DAG di eseguire correttamente l'analisi poiché tutti i requisiti e i plug-in necessari sono disponibili e installati. Usa il seguente esempio per creare un DAG con un to run. BashOperator 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" )

Operatori

L'argomento seguente descrive gli errori che potreste ricevere quando utilizzate gli operatori.

Ho ricevuto un errore PermissionError: [Errno 13] Autorizzazione negata utilizzando l'operatore S3Transform

Ti consigliamo i seguenti passaggi se stai cercando di eseguire uno script di shell con l'operatore S3Transform e ricevi un errore. PermissionError: [Errno 13] Permission denied I passaggi seguenti presuppongono che tu abbia un file plugins.zip esistente. Se stai creando un nuovo plugins.zip, fai riferimento aInstallazione di plugin personalizzati.

  1. Testa i tuoi DAG, i plugin personalizzati e le dipendenze Python localmente usando aws-mwaa-docker-images on. https://github.com/aws/amazon-mwaa-docker-images GitHub

  2. Crea il tuo script di «trasformazione».

    #!/bin/bash cp $1 $2
  3. (opzionale) Gli utenti macOS e Linux potrebbero dover eseguire il comando seguente per assicurarsi che lo script sia eseguibile.

    chmod 777 transform_test.sh
  4. Aggiungi lo script al tuo plugins.zip.

    zip plugins.zip transform_test.sh
  5. Segui la procedura descritta in Caricare il file plugins.zip su Amazon S3.

  6. Segui i passaggi descritti in Specificare la versione plugins.zip sulla console Amazon MWAA.

  7. Crea il seguente 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' )
  8. Segui i passaggi descritti in Caricare il codice DAG su Amazon S3.