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 di Amazon CloudWatch Logs e AWS CloudTrail gli errori che puoi riscontrare in un ambiente Amazon Managed Workflows for Apache Airflow.

Log

L'argomento seguente descrive gli errori che potresti ricevere quando accedi ai log di Apache Airflow.

Non riesco a trovare i miei registri delle attività o ho ricevuto un errore Reading remote log from Cloudwatch log_group

Amazon MWAA ha configurato Apache Airflow per leggere e scrivere log direttamente da e verso Amazon Logs. CloudWatch Se un lavoratore non riesce ad avviare un'attività o non riesce a scrivere alcun registro, farai riferimento all'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. Verificate di aver abilitato i registri delle attività a INFO livello del vostro ambiente. Per ulteriori informazioni, vedi Accesso ai log 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 in Python utilizzando. aws-mwaa-docker-images

Le attività non riescono 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 elencato 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.

Ricevo 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

Ricevo un Invalid request errore 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, fare riferimento aTutorial di avvio rapido per Amazon Managed Workflows for Apache Airflow.

Entro Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory nei log di Apache Airflow

Nei log del mio scheduler ricevo psycopg2 «il server ha chiuso la connessione in modo imprevisto»

Se viene visualizzato un errore simile al seguente, è possibile che lo scheduler Apache Airflow 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 puoi usare per specificare fino a 5 scheduler.

Accedo ai registri di elaborazione del mio DAG Executor reports task instance %s finished (%s) although the task says its %s

Se ricevi un errore simile al seguente, è possibile che le attività a esecuzione prolungata abbiano raggiunto il limite di tempo delle 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 esegue un sondaggio dei sensori Apache Airflow per verificare quando è completo. Se un sensore si guasta, può essere riprovato in sicurezza senza influire sulla funzionalità dell'operatore.

Comprendo i miei Could not read remote logs from log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log. 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 apache-airflow-providers-databricksil pacchetto, che è compatibile solo con Airflow 2.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 DAGs plugin personalizzati e le dipendenze Python localmente usando on. aws-mwaa-docker-images GitHub