As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Alterando o fuso horário DAG de um na Amazon MWAA
O Apache Airflow programa seu gráfico acíclico direcionado () DAG em +0 por padrão. UTC As etapas a seguir mostram como você pode alterar o fuso horário em que a Amazon MWAA opera seu DAGs com o Pendulum
Tópicos
Version (Versão)
Pré-requisitos
Para usar o código de amostra nesta página, você precisará do seguinte:
Permissões
-
Nenhuma permissão adicional é necessária para usar o exemplo de código nesta página.
Crie um plug-in para alterar o fuso horário nos logs do Airflow
O Apache Airflow executará os arquivos Python no diretório plugins
na inicialização. Com o plug-in a seguir, é possível substituir o fuso horário do executor, o que modifica o fuso horário no qual o Apache Airflow grava os logs.
-
Crie um diretório com o nome
plugins
para seu plug-in personalizado e navegue até o diretório. Por exemplo:$ mkdir plugins $ cd plugins
-
Copie o conteúdo do exemplo do código a seguir e salve localmente como
dag-timezone-plugin.py
no arquivoplugins
.import time import os os.environ['TZ'] = 'America/Los_Angeles' time.tzset()
-
No diretório
plugins
, crie um arquivo Python vazio chamado__init__.py
. Seu diretórioplugins
deve ser semelhante ao seguinte:plugins/ |-- __init__.py |-- dag-timezone-plugin.py
Criar uma plugins.zip
As etapas a seguir mostram como criar plugins.zip
. O conteúdo deste exemplo pode ser combinado com outros plug-ins e binários em um único arquivo plugins.zip
.
-
Em sua prompt linha de comando, navegue até o diretório
plugins
da etapa anterior. Por exemplo:cd plugins
-
Compacte o conteúdo em seu diretório
plugins
.zip -r ../plugins.zip ./
-
Faça upload de
plugins.zip
para o seu bucket S3.$
aws s3 cp plugins.zip s3://
your-mwaa-bucket
/
Exemplo de código
Para alterar o fuso horário padrão (UTC+0) no qual DAG ele é executado, usaremos uma biblioteca chamada Pendulum,
-
No prompt de comando, navegue até o diretório em que você DAGs está armazenado. Por exemplo:
$
cd dags
-
Copie o conteúdo do exemplo a seguir e salve como
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" )
-
Execute o AWS CLI comando a seguir para copiar o DAG para o bucket do seu ambiente e, em seguida, acione-o DAG usando a interface do usuário do Apache Airflow.
$
aws s3 cp
your-dag
.py s3://your-environment-bucket
/dags/ -
Se for bem-sucedido, você exibirá uma saída semelhante à seguinte nos registros de tarefas do
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
Próximas etapas
-
Saiba mais sobre como fazer o upload do
plugins.zip
arquivo neste exemplo para seu bucket do Amazon S3 em Como instalar plug-ins personalizados.