

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

# Como alterar o fuso horário de um DAG no Amazon MWAA
<a name="samples-plugins-timezone"></a>

Por padrão, o Apache Airflow programa seu gráfico acíclico direcionado (DAG) em UTC\$10. As etapas a seguir mostram como é possível alterar o fuso horário no qual o Amazon MWAA executa seus DAGs com o [Pendulum](https://pypi.org/project/pendulum/). Como opção, este tópico demonstra como é possível criar um plug-in personalizado para alterar o fuso horário dos logs do Apache Airflow do seu ambiente.

**Topics**
+ [Versão](#samples-plugins-timezone-version)
+ [Pré-requisitos](#samples-plugins-timezone-prerequisites)
+ [Permissões](#samples-plugins-timezone-permissions)
+ [Crie um plug-in para alterar o fuso horário nos logs do Airflow](#samples-plugins-timezone-custom-plugin)
+ [Crie um `plugins.zip`](#samples-plugins-timezone-plugins-zip)
+ [Exemplo de código](#samples-plugins-timezone-dag)
+ [Próximas etapas](#samples-plugins-timezone-plugins-next-up)

## Versão
<a name="samples-plugins-timezone-version"></a>

É possível usar o exemplo de código nesta página com o **Apache Airflow v2** no [Python 3.10](https://peps.python.org/pep-0619/) e o **Apache Airflow v3** no [Python 3.11](https://peps.python.org/pep-0664/).

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

Para usar o código de amostra nesta página, você precisará do seguinte:
+ Um [ambiente Amazon MWAA](get-started.md).

## Permissões
<a name="samples-plugins-timezone-permissions"></a>

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
<a name="samples-plugins-timezone-custom-plugin"></a>

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.

1. 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
   ```

1. Copie o conteúdo do exemplo do código a seguir e salve localmente como `dag-timezone-plugin.py` no arquivo `plugins`.

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

1. No diretório `plugins`, crie um arquivo Python vazio chamado `__init__.py`. Seu diretório `plugins` deve ser semelhante ao seguinte:

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

## Crie um `plugins.zip`
<a name="samples-plugins-timezone-plugins-zip"></a>

As etapas a seguir explicam 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`.

1. Em sua prompt linha de comando, navegue até o diretório `plugins` da etapa anterior. Por exemplo:

   ```
   cd plugins
   ```

1. Compacte o conteúdo em seu diretório `plugins`.

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

1. Faça upload de `plugins.zip` para o seu bucket S3.

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

## Exemplo de código
<a name="samples-plugins-timezone-dag"></a>

Para alterar o fuso horário padrão (UTC\$10) no qual o DAG é executado, usaremos uma biblioteca chamada [Pendulum](https://pypi.org/project/pendulum/), uma biblioteca Python para trabalhar com data e hora com reconhecimento de fuso horário.

1. No prompt de comando, navegue até o diretório em que seus DAGs estão armazenados. Por exemplo:

   ```
   cd dags
   ```

1. 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"
       )
   ```

1.  Execute o seguinte comando AWS CLI para copiar o DAG para o bucket do seu ambiente e, em seguida, acionar o DAG usando a IU do Apache Airflow. 

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

1. Se tiver êxito, você exibirá uma saída semelhante à seguinte nos logs de tarefas para `tz_aware_task` no DAG `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
   ```

## Próximas etapas
<a name="samples-plugins-timezone-plugins-next-up"></a>
+ 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](configuring-dag-import-plugins.md).