

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Modifier le fuseau horaire d'un DAG sur Amazon MWAA
<a name="samples-plugins-timezone"></a>

Apache Airflow planifie votre graphe acyclique dirigé (DAG) en UTC\$10 par défaut. [Les étapes suivantes expliquent comment modifier le fuseau horaire dans lequel Amazon MWAA exécute votre appareil DAGs avec Pendulum.](https://pypi.org/project/pendulum/) Cette rubrique explique éventuellement comment créer un plugin personnalisé pour modifier le fuseau horaire des journaux Apache Airflow de votre environnement.

**Topics**
+ [Version](#samples-plugins-timezone-version)
+ [Prérequis](#samples-plugins-timezone-prerequisites)
+ [Permissions](#samples-plugins-timezone-permissions)
+ [Créez un plugin pour modifier le fuseau horaire dans les journaux Airflow](#samples-plugins-timezone-custom-plugin)
+ [Créer une `plugins.zip`](#samples-plugins-timezone-plugins-zip)
+ [Exemple de code](#samples-plugins-timezone-dag)
+ [Quelle est la prochaine étape ?](#samples-plugins-timezone-plugins-next-up)

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

[Vous pouvez utiliser l'exemple de code présenté sur cette page avec **Apache Airflow v2** en [Python 3.10](https://peps.python.org/pep-0619/) et **Apache Airflow v3** en Python 3.11.](https://peps.python.org/pep-0664/)

## Prérequis
<a name="samples-plugins-timezone-prerequisites"></a>

Pour utiliser l'exemple de code présenté sur cette page, vous aurez besoin des éléments suivants :
+ Un [environnement Amazon MWAA.](get-started.md)

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

Aucune autorisation supplémentaire n'est requise pour utiliser l'exemple de code présenté sur cette page.

## Créez un plugin pour modifier le fuseau horaire dans les journaux Airflow
<a name="samples-plugins-timezone-custom-plugin"></a>

Apache Airflow exécute les fichiers Python du `plugins` répertoire au démarrage. Avec le plugin suivant, vous pouvez remplacer le fuseau horaire de l'exécuteur, qui modifie le fuseau horaire dans lequel Apache Airflow écrit les logs.

1. Créez un répertoire portant le nom `plugins` de votre plugin personnalisé, puis naviguez jusqu'au répertoire. Par exemple :

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

1. Copiez le contenu de l'exemple de code suivant et enregistrez-le localement `dag-timezone-plugin.py` dans le `plugins` dossier.

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

1. Dans le `plugins` répertoire, créez un fichier Python vide nommé`__init__.py`. Votre `plugins` répertoire doit être similaire au suivant :

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

## Créer une `plugins.zip`
<a name="samples-plugins-timezone-plugins-zip"></a>

Les étapes suivantes expliquent comment créer`plugins.zip`. Le contenu de cet exemple peut être combiné avec d'autres plugins et binaires dans un seul `plugins.zip` fichier.

1. Dans votre invite de commande, accédez au `plugins` répertoire de l'étape précédente. Par exemple :

   ```
   cd plugins
   ```

1. Compressez le contenu dans votre `plugins` répertoire.

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

1. Téléchargez `plugins.zip` dans votre compartiment S3

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

## Exemple de code
<a name="samples-plugins-timezone-dag"></a>

Pour modifier le fuseau horaire par défaut (UTC\$10) dans lequel le DAG s'exécute, nous utiliserons une bibliothèque appelée [Pendulum](https://pypi.org/project/pendulum/), une bibliothèque Python permettant de travailler avec des date/heure tenant compte du fuseau horaire.

1. Dans votre invite de commande, accédez au répertoire dans lequel vous DAGs êtes enregistré. Par exemple :

   ```
   cd dags
   ```

1. Copiez le contenu de l'exemple suivant et enregistrez-le sous`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.  Exécutez la AWS CLI commande suivante pour copier le DAG dans le bucket de votre environnement, puis déclenchez le DAG à l'aide de l'interface utilisateur d'Apache Airflow. 

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

1. En cas de succès, vous obtiendrez un résultat similaire à ce qui suit dans les journaux des tâches du `tz_test` DAG : `tz_aware_task`

   ```
   [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
   ```

## Quelle est la prochaine étape ?
<a name="samples-plugins-timezone-plugins-next-up"></a>
+ Découvrez comment charger le `plugins.zip` fichier dans cet exemple dans votre compartiment Amazon S3 dans[Installation de plugins personnalisés](configuring-dag-import-plugins.md).