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
Apache Airflow planifie votre graphe acyclique dirigé (DAG) en UTC+0 par défaut. Les étapes suivantes expliquent comment modifier le fuseau horaire dans lequel Amazon MWAA exécute votre appareil DAGs avec Pendulum.
Rubriques
Version
Vous pouvez utiliser l'exemple de code présenté sur cette page avec Apache Airflow v2 en Python 3.10
Prérequis
Pour utiliser l'exemple de code présenté sur cette page, vous aurez besoin des éléments suivants :
Autorisations
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
Apache Airflow exécutera les fichiers Python présents dans le 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.
-
Créez un répertoire portant le nom
pluginsde votre plugin personnalisé, puis naviguez jusqu'au répertoire. Exemples :$ mkdir plugins $ cd plugins -
Copiez le contenu de l'exemple de code suivant et enregistrez-le localement
dag-timezone-plugin.pydans lepluginsdossier.import time import os os.environ['TZ'] = 'America/Los_Angeles' time.tzset() -
Dans le
pluginsrépertoire, créez un fichier Python vide nommé__init__.py. Votrepluginsrépertoire doit être similaire au suivant :plugins/ |-- __init__.py |-- dag-timezone-plugin.py
Créer une plugins.zip
Les étapes suivantes expliquent comment créerplugins.zip. Le contenu de cet exemple peut être combiné avec d'autres plugins et binaires dans un seul plugins.zip fichier.
-
Dans votre invite de commande, accédez au
pluginsrépertoire de l'étape précédente. Exemples :cd plugins -
Compressez le contenu dans votre
pluginsrépertoire.zip -r ../plugins.zip ./ -
Téléversez
plugins.zipdans votre compartiment S3aws s3 cp plugins.zip s3://your-mwaa-bucket/
Exemple de code
Pour modifier le fuseau horaire par défaut (UTC+0) dans lequel le DAG s'exécute, nous utiliserons une bibliothèque appelée Pendulum
-
Dans votre invite de commande, accédez au répertoire dans lequel vous DAGs êtes enregistré. Exemples :
cd dags -
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" ) -
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 cpyour-dag.py s3://your-environment-bucket/dags/ -
En cas de succès, vous obtiendrez un résultat similaire à ce qui suit dans les journaux des tâches du
tz_testDAG :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 ?
-
Découvrez comment charger le
plugins.zipfichier dans cet exemple dans votre compartiment Amazon S3 dansInstallation de plugins personnalisés.