Airflow gerenciado (Geração 3) | Airflow gerenciado (Geração 2) | Airflow gerenciado (Geração 1 legada)
Nesta página, descrevemos como gerenciar conexões do Airflow no ambiente e acessá-las nos DAGs.
Sobre as conexões do Airflow
As conexões do Airflow armazenam credenciais e outras informações de conexão, como nomes de usuário, strings de conexão e senhas. Os DAGs usam conexões para se comunicar e acessar recursos no Google Cloud Google Cloud e outros serviços de seus DAGs.
Os operadores do Airflow nos DAGs usam uma conexão padrão para o operador ou você especifica um nome de conexão personalizado.
Sobre a segurança da conexão
A maioria dos operadores do Airflow não aceita credenciais diretamente. Em vez disso, eles usam conexões do Airflow.
Quando você cria um novo ambiente, o Airflow gerenciado gera uma chave fernet permanente e exclusiva para o ambiente. Por padrão, protege os extras de conexão. É possível conferir a fernet_key na página Configuração da interface do
Airflow.
Para mais informações sobre como as conexões e senhas são protegidas no Airflow, consulte Como proteger conexões e Mascarar dados sensíveis na documentação do Airflow.
Sobre os tipos de conexão
O Airflow usa conexões de diferentes tipos para se conectar a serviços específicos. Por exemplo, o Google Cloud tipo de conexão se conecta a outros serviços em Google Cloud. Como outro exemplo, o tipo de conexão S3 se conecta a um bucket do Amazon S3.
Para adicionar um tipo de conexão ao Airflow,
instale um pacote PyPI com esse tipo de conexão.
Alguns pacotes são pré-instalados no ambiente. Por exemplo, é possível usar a conexão do pacote apache-airflow-providers-google sem instalar pacotes PyPI personalizados.
Conexões pré-configuradas
O Airflow gerenciado configura as seguintes conexões padrão no ambiente. É possível usar essas conexões para acessar recursos no projeto sem configurá-las.
google_cloud_defaultbigquery_defaultgoogle_cloud_datastore_defaultgoogle_cloud_storage_default
Adicionar uma conexão no Secret Manager
É possível armazenar uma conexão no Secret Manager sem adicioná-la ao Airflow. Recomendamos usar essa abordagem ao armazenar credenciais e outras informações sensíveis.
Para adicionar uma conexão no Secret Manager:
Adicione um secret com o nome que corresponde ao padrão de conexões.
Por exemplo:
airflow-connections-example_connection. Nos DAGs, use o nome da conexão sem o prefixo:example_connection.Adicione parâmetros para a conexão:
Formato JSON
Adicione a representação JSON da conexão como o valor do secret. Exemplo:
{ "conn_type": "mysql", "host": "example.com", "login": "login", "password": "password", "port": "9000" }Para mais informações sobre o formato de conexão JSON, consulte a documentação do Airflow.
Formato de URI
Adicione a representação de URI da conexão como o valor do secret:
O secret precisa armazenar uma representação de URI da conexão. Por exemplo,
mysql://login:password@example.com:9000.O URI precisa ser codificado por URL. Por exemplo, uma senha que tenha um símbolo de espaço precisa ser codificada em URL da seguinte maneira:
mysql://login:secret%20password@example.com:9000.
O Airflow tem um método de conveniência para gerar URIs de conexão. Um exemplo de como codificar um URL complexo com extras em JSON está disponível na documentação do Airflow.
Verifique se todos os parâmetros de conexão são lidos corretamente no Secret Manager.
Adicionar uma conexão no Airflow
Como alternativa ao armazenamento de conexões no Secret Manager, é possível armazená-las no Airflow.
Para adicionar uma conexão no Airflow:
CLI do Airflow
Execute o
connections add comando da CLI do Airflow
com a Google Cloud CLI. Exemplo:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
connections add -- \
--conn-type "mysql" \
--conn-host "example.com" \
--conn-port "9000" \
--conn-login "login" \
--conn-password "password" \
example_connection
Também é possível usar o argumento --conn-uri:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
connections add -- \
--conn-uri "mysql://login:password@example.com:9000" \
example_connection
Substitua:
ENVIRONMENT_NAME: o nome do ambiente;LOCATION: a região em que o ambiente está localizado.
Interface do Airflow
Verificar se o Airflow lê uma conexão corretamente
É possível executar o comando connections get da CLI do Airflow pela Google Cloud CLI para verificar se uma conexão é lida corretamente. Por exemplo, se você armazenar uma conexão no Secret Manager, isso vai permitir verificar se todos os parâmetros de uma conexão são lidos pelo Airflow de um secret.
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
connections get \
-- CONNECTION_NAME
Substitua:
ENVIRONMENT_NAMEpelo nome do ambienteLOCATIONpela região em que o ambiente está localizadoCONNECTION_NAMEpelo nome da conexão Se a conexão estiver armazenada no Secret Manager, use o nome da conexão sem o prefixo. Por exemplo, especifiqueexample_connectionem vez deairflow-connections-example_connection_json.
Exemplo:
gcloud composer environments run example-environment \
--location us-central1 \
connections get \
-- example_connection -o json
Usar conexões do Airflow nos DAGs
Esta seção mostra como acessar sua conexão em um DAG.
Usar uma conexão do Secret Manager
Use o nome da conexão sem o prefixo. Por exemplo, se o secret
for chamado de airflow-connections-aws_s3, especifique
aws_s3.
transfer_dir_from_s3 = S3ToGCSOperator(
task_id='transfer_dir_from_s3',
aws_conn_id='aws_s3',
prefix='data-for-gcs',
bucket='example-s3-bucket-transfer-operators',
dest_gcs='gs://us-central1-example-environ-361f4221-bucket/data/from-s3/')
Se você armazenar uma conexão padrão no Secret Manager, poderá omitir o nome da conexão. Consulte a documentação do Airflow para um operador específico para receber o nome de conexão padrão usado por um operador. Por exemplo, o operador S3ToGCSOperator do Airflow usa a conexão aws_default por padrão. É possível armazenar essa conexão padrão em um secret chamado airflow-connections-aws_default.
Usar uma conexão armazenada no Airflow
Use o nome da conexão, conforme definido no Airflow:
transfer_dir_from_s3 = S3ToGCSOperator(
task_id='transfer_dir_from_s3',
aws_conn_id='aws_s3',
prefix='data-for-gcs',
bucket='example-s3-bucket-transfer-operators',
dest_gcs='gs://us-central1-example-environ-361f4221-bucket/data/from-s3/')
Para usar a conexão padrão de um operador, omita o nome da conexão. Consulte a documentação do Airflow para um operador específico para receber o nome de conexão padrão usado por um operador. Por exemplo, o operador S3ToGCSOperator do Airflow usa a conexão aws_default por padrão.
Solução de problemas
Se o ambiente não conseguir acessar o secret armazenado no Secret Manager:
Verifique se o Secret Manager está configurado no ambiente.
Verifique se o nome da conexão no Secret Manager corresponde à conexão usada pelo Airflow. Por exemplo, para uma conexão chamada
example_connection, o nome do secret éairflow-connections-example_connection.Verifique se o Airflow lê uma conexão corretamente.