

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

# Modifica del fuso orario di un DAG su Amazon MWAA
<a name="samples-plugins-timezone"></a>

Apache Airflow pianifica il grafo aciclico diretto (DAG) in UTC\$10 per impostazione predefinita. [I passaggi seguenti illustrano come modificare il fuso orario in cui Amazon MWAA esegue Pendulum. DAGs ](https://pypi.org/project/pendulum/) Facoltativamente, questo argomento dimostra come creare un plug-in personalizzato per modificare il fuso orario per i log Apache Airflow del tuo ambiente.

**Topics**
+ [Versione](#samples-plugins-timezone-version)
+ [Prerequisiti](#samples-plugins-timezone-prerequisites)
+ [Permissions](#samples-plugins-timezone-permissions)
+ [Crea un plug-in per modificare il fuso orario nei registri di Airflow](#samples-plugins-timezone-custom-plugin)
+ [Creazione di una `plugins.zip`](#samples-plugins-timezone-plugins-zip)
+ [Esempio di codice](#samples-plugins-timezone-dag)
+ [Fasi successive](#samples-plugins-timezone-plugins-next-up)

## Versione
<a name="samples-plugins-timezone-version"></a>

**[È possibile utilizzare l'esempio di codice in questa pagina con **Apache Airflow v2 in Python 3.10 e Apache Airflow v3**[in Python 3.11](https://peps.python.org/pep-0619/).](https://peps.python.org/pep-0664/)**

## Prerequisiti
<a name="samples-plugins-timezone-prerequisites"></a>

Per utilizzare il codice di esempio in questa pagina, avrai bisogno di quanto segue:
+ Un ambiente [Amazon MWAA](get-started.md).

## Permissions
<a name="samples-plugins-timezone-permissions"></a>

Non sono necessarie autorizzazioni aggiuntive per utilizzare l'esempio di codice in questa pagina.

## Crea un plug-in per modificare il fuso orario nei registri di Airflow
<a name="samples-plugins-timezone-custom-plugin"></a>

Apache Airflow esegue i file Python nella directory all'avvio. `plugins` Con il seguente plugin, puoi sovrascrivere il fuso orario dell'esecutore, che modifica il fuso orario in cui Apache Airflow scrive i log.

1. Crea una directory con il nome del tuo plugin personalizzato e accedi `plugins` alla directory. Ad esempio:

   ```
   $ mkdir plugins
   $ cd plugins
   ```

1. Copiate il contenuto del seguente esempio di codice e salvatelo localmente come `dag-timezone-plugin.py` nella `plugins` cartella.

   ```
   import time
   import os
   
   os.environ['TZ'] = 'America/Los_Angeles'
   time.tzset()
   ```

1. Nella `plugins` directory, crea un file Python vuoto denominato. `__init__.py` La tua `plugins` directory dovrebbe essere simile alla seguente:

   ```
   plugins/
    |-- __init__.py
    |-- dag-timezone-plugin.py
   ```

## Creazione di una `plugins.zip`
<a name="samples-plugins-timezone-plugins-zip"></a>

I passaggi seguenti spiegano come creare`plugins.zip`. Il contenuto di questo esempio può essere combinato con altri plugin e file binari in un unico `plugins.zip` file.

1. Nel prompt dei comandi, accedete alla `plugins` directory del passaggio precedente. Ad esempio:

   ```
   cd plugins
   ```

1. Comprimi il contenuto all'interno della `plugins` cartella.

   ```
   zip -r ../plugins.zip ./
   ```

1. Caricalo `plugins.zip` nel tuo bucket S3

   ```
   aws s3 cp plugins.zip s3://your-mwaa-bucket/
   ```

## Esempio di codice
<a name="samples-plugins-timezone-dag"></a>

Per cambiare il fuso orario predefinito (UTC\$10) in cui viene eseguito il DAG, useremo una libreria chiamata Pendulum[,](https://pypi.org/project/pendulum/) una libreria Python per lavorare con datetime che riconosce il fuso orario.

1. Nel prompt dei comandi, accedi alla directory in cui sei archiviato. DAGs Ad esempio:

   ```
   cd dags
   ```

1. Copiate il contenuto del seguente esempio e salvatelo con nome. `tz-aware-dag.py`

   ```
   from airflow import DAG
   from airflow.operators.bash_operator import BashOperator
   from datetime import datetime, timedelta
   # Import the Pendulum library.
   import pendulum
   
   # Instantiate Pendulum and set your timezone.
   local_tz = pendulum.timezone("America/Los_Angeles")
   
   with DAG(
       dag_id = "tz_test",
       schedule_interval="0 12 * * *",
       catchup=False,
       start_date=datetime(2022, 1, 1, tzinfo=local_tz)
   ) as dag:
       bash_operator_task = BashOperator(
           task_id="tz_aware_task",
           dag=dag,
           bash_command="date"
       )
   ```

1.  Esegui il AWS CLI comando seguente per copiare il DAG nel bucket del tuo ambiente, quindi attiva il DAG utilizzando l'interfaccia utente di Apache Airflow. 

   ```
   aws s3 cp your-dag.py s3://your-environment-bucket/dags/
   ```

1. In caso di successo, otterrete un risultato simile al seguente nei log delle attività per il DAG: `tz_aware_task` `tz_test`

   ```
   [2022-08-01, 12:00:00 PDT] {{subprocess.py:74}} INFO - Running command: ['bash', '-c', 'date']
   [2022-08-01, 12:00:00 PDT] {{subprocess.py:85}} INFO - Output:
   [2022-08-01, 12:00:00 PDT] {{subprocess.py:89}} INFO - Mon Aug  1 12:00:00 PDT 2022
   [2022-08-01, 12:00:00 PDT] {{subprocess.py:93}} INFO - Command exited with return code 0
   [2022-08-01, 12:00:00 PDT] {{taskinstance.py:1280}} INFO - Marking task as SUCCESS. dag_id=tz_test, task_id=tz_aware_task, execution_date=20220801T190033, start_date=20220801T190035, end_date=20220801T190035
   [2022-08-01, 12:00:00 PDT] {{local_task_job.py:154}} INFO - Task exited with return code 0
   [2022-08-01, 12:00:00 PDT] {{local_task_job.py:264}} INFO - 0 downstream tasks scheduled from follow-on schedule check
   ```

## Fasi successive
<a name="samples-plugins-timezone-plugins-next-up"></a>
+ Scopri di più su come caricare il `plugins.zip` file in questo esempio nel tuo bucket Amazon S3 in. [Installazione di plugin personalizzati](configuring-dag-import-plugins.md)