Risoluzione dei problemi: CloudWatch log ed CloudTrail errori - 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: CloudWatch log ed CloudTrail errori

Gli argomenti di questa pagina contengono le risoluzioni ad Amazon CloudWatch Logs e AWS CloudTrail gli errori che potresti riscontrare in un ambiente Amazon Managed Workflows for Apache Airflow.

Log

L'argomento seguente descrive gli errori che potresti ricevere durante la visualizzazione dei log di Apache Airflow.

Non riesco a visualizzare i miei registri delle attività o ho ricevuto l'errore «Leggere il registro remoto da Cloudwatch log_group»

Amazon MWAA ha configurato Apache Airflow per leggere e scrivere i log direttamente da e verso Amazon Logs. CloudWatch Se un lavoratore non riesce ad avviare un'attività o non riesce a scrivere alcun registro, verrà visualizzato l'errore:

*** 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.
  • È consigliabile eseguire le operazioni seguenti:

    1. Verifica di aver abilitato i registri delle attività a INFO livello del tuo ambiente. Per ulteriori informazioni, consulta Visualizzazione dei log di Airflow in Amazon CloudWatch.

    2. Verifica che il ruolo di esecuzione dell'ambiente disponga delle politiche di autorizzazione corrette.

    3. Verifica che l'operatore o l'attività funzioni correttamente, disponga di risorse sufficienti per analizzare il DAG e disponga delle librerie Python appropriate da caricare. Per verificare se hai le dipendenze corrette, prova a eliminare le importazioni finché non trovi quella che causa il problema. Ti consigliamo di testare le tue dipendenze Python utilizzando lo strumento local-runner di Amazon MWAA.

Le attività non vanno a buon fine senza alcun registro

Se le attività non riescono in un flusso di lavoro e non riesci a individuare alcun registro delle attività non riuscite, controlla se stai impostando il queue parametro negli argomenti predefiniti, come illustrato di seguito.

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'] }}" )

Per risolvere il problema, rimuovi queue dal codice e richiama nuovamente il DAG.

Vedo un errore '' in ResourceAlreadyExistsException CloudTrail

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

Alcuni requisiti di Python, come il apache-airflow-backport-providers-amazon ripristino della watchtower libreria utilizzata da Amazon MWAA per comunicare a una versione precedente CloudWatch . È consigliabile eseguire le operazioni seguenti:

  • Aggiungi la seguente libreria alla tua requirements.txt

    watchtower==1.0.6

Vedo un errore «Richiesta non valida» in CloudTrail

Invalid request provided: Provided role does not have sufficient permissions for s3 location airflow-xxx-xxx/dags

Se stai creando un ambiente Amazon MWAA e un bucket Amazon S3 utilizzando lo AWS CloudFormation stesso modello, devi aggiungere DependsOn una sezione all'interno del modello. AWS CloudFormation Le due risorse (MWAA Environment e MWAA Execution Policy) dipendono da. AWS CloudFormation È consigliabile eseguire le operazioni seguenti:

  • Aggiungi la seguente dichiarazione al tuo modelloDependsOn. AWS CloudFormation

    ... 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: ...

    Per un esempio, consulta Tutorial di avvio rapido per Amazon Managed Workflows for Apache Airflow.

Nei log di Apache Airflow viene visualizzato il messaggio «Impossibile individuare una libreria Oracle Client a 64 bit: «libclntsh.so: impossibile aprire il file o la directory condivisa: nessun file o directory di questo tipo»

  • È consigliabile eseguire le operazioni seguenti:

    1. Se utilizzi Apache Airflow v2, aggiungilo core.lazy_load_plugins : False come opzione di configurazione Apache Airflow. Per saperne di più, consulta Usare le opzioni di configurazione per caricare i plugin in 2.

Vedo psycopg2 «il server ha chiuso la connessione in modo imprevisto» nei miei log di Scheduler

Se viene visualizzato un errore simile al seguente, è possibile che Apache Airflow Scheduler abbia esaurito le risorse.

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.

È consigliabile eseguire le operazioni seguenti:

  • Prendi in considerazione l'aggiornamento ad Apache Airflow v2.0.2, che consente di specificare fino a 5 Scheduler.

Nei miei registri di elaborazione DAG vedo «Executor riporta che l'istanza dell'operazione %s è terminata (%s) anche se l'attività dice che è %s»

Se visualizzi un errore simile al seguente, è possibile che le attività a esecuzione prolungata abbiano raggiunto il limite di tempo consentito per le attività su Amazon MWAA. Amazon MWAA ha un limite di 12 ore per ogni attività Airflow, per evitare che le attività rimangano bloccate in coda e blocchino attività come la scalabilità automatica.

Executor reports task instance %s finished (%s) although the task says its %s. (Info: %s) Was the task killed externally

È consigliabile eseguire le operazioni seguenti:

  • Prendi in considerazione la possibilità di suddividere l'attività in più attività con esecuzione più breve. Airflow ha in genere un modello in base al quale gli operatori sono asincroni. Richiama attività su sistemi esterni e Apache Airflow Sensors effettua un sondaggio per vedere quando è completo. Se un sensore si guasta, può essere riprovato in sicurezza senza influire sulla funzionalità dell'operatore.

Vedo 'Impossibile leggere i log remoti da log_group: airflow-* {*EnvironmentName} -Task log_stream: * {*DAG_ID} /* {*TASK_ID} /* {*time} /* {*n} .log. ' nei miei registri delle attività

Se viene visualizzato un errore simile al seguente, è possibile che il ruolo di esecuzione per l'ambiente in uso non contenga una politica di autorizzazioni per la creazione di flussi di registro per i registri delle attività.

Could not read remote logs from log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log.

È consigliabile eseguire le operazioni seguenti:

È inoltre possibile che nel requirements.txt file sia stato specificato un pacchetto provider incompatibile con la versione di Apache Airflow in uso. Ad esempio, se utilizzi Apache Airflow v2.0.2, potresti aver specificato un pacchetto, come il pacchetto, compatibile solo con Airflow apache-airflow-providers-databricks2.1+.

È consigliabile eseguire le operazioni seguenti:

  1. Se utilizzi Apache Airflow v2.0.2, modifica il file e aggiungi. requirements.txt apache-airflow[databricks] Questo installa la versione corretta del pacchetto Databricks compatibile con Apache Airflow v2.0.2.

  2. Testa i tuoi DAG, i plugin personalizzati e le dipendenze Python localmente usando on. aws-mwaa-local-runner GitHub