

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
<a name="t-cloudwatch-cloudtrail-logs"></a>

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.

**Contents**
+ [Log](#troubleshooting-view-logs)
  + [Non riesco a trovare i miei registri delle attività o ho ricevuto un errore `Reading remote log from Cloudwatch log_group`](#t-task-logs)
  + [Le attività non riescono senza alcun registro](#t-task-failing-no-logs)
  + [Ricevo un errore in `ResourceAlreadyExistsException` CloudTrail](#t-cloudtrail)
  + [Ricevo un `Invalid request` errore in CloudTrail](#t-cloudtrail-bucket)
  + [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](#t-plugins-logs)
  + [Nei log del mio scheduler ricevo psycopg2 «il server ha chiuso la connessione in modo imprevisto»](#scheduler-postgres-library)
  + [Accedo ai registri di elaborazione del mio DAG `Executor reports task instance %s finished (%s) although the task says its %s`](#long-running-tasks)
  + [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à](#t-task-fail-permission)

## Log
<a name="troubleshooting-view-logs"></a>

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`
<a name="t-task-logs"></a>

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](monitoring-airflow.md).

  1. Verifica che il [ruolo di esecuzione](mwaa-create-role.md) dell'ambiente disponga delle politiche di autorizzazione corrette.

  1. 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](https://github.com/aws/amazon-mwaa-docker-images)

### Le attività non riescono senza alcun registro
<a name="t-task-failing-no-logs"></a>

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
<a name="t-cloudtrail"></a>

```
"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
<a name="t-cloudtrail-bucket"></a>

```
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 CloudFormation stesso modello, devi aggiungere `DependsOn` una sezione all'interno del modello. CloudFormation Le due risorse (*MWAA Environment e MWAA Execution* *Policy) dipendono da*. CloudFormationÈ consigliabile eseguire le operazioni seguenti:
+ Aggiungi la seguente dichiarazione al tuo modello**DependsOn**. 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 a[Tutorial di avvio rapido per Amazon Managed Workflows for Apache Airflow](quick-start.md).

### 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
<a name="t-plugins-logs"></a>
+ È consigliabile eseguire le operazioni seguenti:

  1. Se utilizzi Apache Airflow v2, `core.lazy_load_plugins : False` aggiungilo come opzione di configurazione Apache Airflow. Per ulteriori informazioni, consulta [Usare le opzioni di configurazione per caricare i plugin in](configuring-env-variables.md#configuring-2.0-airflow-override) 2.

### Nei log del mio scheduler ricevo psycopg2 «il server ha chiuso la connessione in modo imprevisto»
<a name="scheduler-postgres-library"></a>

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`
<a name="long-running-tasks"></a>

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à
<a name="t-task-fail-permission"></a>

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:
+ Modifica il ruolo di esecuzione per il tuo ambiente utilizzando una delle politiche di esempio disponibili in. [Ruolo di esecuzione di Amazon MWAA](mwaa-create-role.md)

È 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-databricks](https://airflow.apache.org/docs/apache-airflow-providers-databricks/stable/index.html)il 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.

1. Testa i tuoi DAGs plugin personalizzati e le dipendenze Python localmente usando on. [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) GitHub