Bom dia, Estou utilizando o Airflow via Docker e surge o erro : OSError while attempting to symlink the latest log directory Alguma ideia do que pode ser? Com o python usando o os.mkdir funciona perfeitamente, mas via DAG não há a criação da pasta.
Bom dia, Estou utilizando o Airflow via Docker e surge o erro : OSError while attempting to symlink the latest log directory Alguma ideia do que pode ser? Com o python usando o os.mkdir funciona perfeitamente, mas via DAG não há a criação da pasta.
Olá, tudo bem com você?
Desculpe pela demora em dar um retorno.
Vou partir do pressuposto de que você instalou o Airflow no Docker de acordo com o Alura+ em "Instalando o Airflow no Docker". Está tudo bem?
Para solucionar isso, precisamos nos lembrar do seguinte detalhe: o Docker não persiste dados a menos que você crie um volume, conforme demonstrado na documentação e também explicado no curso "Docker: criando e gerenciando containers".
Portanto, é necessário criar esse volume para a pasta que você deseja dentro do Docker, utilizando o Airflow.
Por exemplo, suponhamos que eu precise criar uma pasta chamada "duvida_forum" dentro de uma pasta chamada "teste" no meu container. Quais passos deveriam ser adotados?
docker-compose.yaml
, relacionando os volumes. Vamos ao nosso arquivo e adicionamos a seguinte linha:volumes:
- ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags
- ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs
- ${AIRFLOW_PROJ_DIR:-.}/config:/opt/airflow/config
- ${AIRFLOW_PROJ_DIR:-.}/plugins:/opt/airflow/plugins
- ${AIRFLOW_PROJ_DIR:-.}/teste:/opt/airflow/teste # Aqui estamos criando a relação entre a pasta "teste" do nosso computador e a pasta dentro do container.
Se você seguiu o Alura+ mencionado acima, basta executar mkdir teste
no mesmo local onde estão as pastas "dags", "logs", "config" e "plugins".
Subir novamente o container utilizando o comando docker compose up
.
Criar o DAG dentro da pasta "dags" do nosso computador para realizar a criação da pasta. Vou deixar como exemplo o DAG que eu criei:
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
default_args = {
'owner': 'airflow',
'start_date': datetime(2023, 9, 7), # COLOQUE SUA DATA CORRESPONDENTE.
}
dag = DAG(
'create_test_folder',
default_args=default_args,
description='A simple tutorial DAG',
schedule_interval=timedelta(days=1),
)
t1 = BashOperator(
task_id='create_folder',
bash_command='mkdir -p /opt/airflow/teste/duvida_forum',
dag=dag,
)
Pronto. Após a execução do DAG acima, a interface do Airflow criará uma pasta chamada "duvida_forum" dentro da pasta "teste" do seu computador.
Qualquer dúvida só chamar.
Bons estudos.