Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Esta página descreve como gerenciar Conexões do Airflow na sua e acessá-los pelos 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. Seus DAGs usam conexões para se comunicar e acessar recursos no Google Cloud e em outros serviços dos seus DAGs.
Os operadores do Airflow nos seus DAGs usam uma conexão padrão para o operador ou especificam 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 Cloud Composer gera uma
chave fernet exclusiva e permanente para o ambiente e protege os extras de conexão
por padrão. É possível conferir o fernet_key
na página Configuração na 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 Como mascarar dados sensíveis.
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 tipo de conexão do Google Cloud se conecta a outros serviços no Google Cloud. Como outro exemplo, a conexão S3 se conecta a um bucket do Amazon S3.
Para adicionar um tipo de conexão ao Airflow,
instalar um pacote PyPI com esse tipo de conexão.
Alguns pacotes estão pré-instalados no seu 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 Cloud Composer configura as conexões padrão a seguir no seu de nuvem. É possível usar essas conexões para acessar recursos no seu projeto sem precisar configurá-los.
google_cloud_default
bigquery_default
google_cloud_datastore_default
google_cloud_storage_default
Adicionar uma conexão ao 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 corresponde ao padrão das 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 sua conexão como o valor do parâmetro segredo. 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 Documentação do Airflow.
Formato do URI
Adicione a representação de URI da sua conexão como o valor do secreto:
O secret precisa armazenar um Representação do URI de a conexão. Por exemplo,
mysql://login:password@example.com:9000
.O URI precisa ser codificado para uso em 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 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 das conexões no Secret Manager, é possível armazená-los no Airflow.
Para adicionar uma conexão no Airflow:
CLI do Airflow
Execute o
CLI do connections add
Airflow
usando a Google Cloud CLI. Exemplo:
No Airflow 2:
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
No Airflow 1:
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" \
--conn_id "example_connection"
Substitua:
ENVIRONMENT_NAME
: o nome do ambiente;LOCATION
: a região em que o ambiente está localizado.
IU do Airflow
Verificar se o Airflow lê corretamente uma conexão
É possível executar o comando connections get
da CLI do Airflow pelas
a Google Cloud CLI para verificar
se uma conexão é lida corretamente. Por exemplo, se você armazenar uma conexão
com o Secret Manager, ele permite verificar se todos
Os parâmetros de uma conexão são lidos pelo Airflow em um secret.
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
connections get \
-- CONNECTION_NAME
Substitua:
ENVIRONMENT_NAME
pelo nome do ambienteLOCATION
pela região em que o ambiente está localizado;CONNECTION_NAME
pelo 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_connection
em 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 a 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
tiver o nome 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 e saiba
o nome da conexão padrão usado por um operador. Por exemplo, o operador do Airflow S3ToGCSOperator
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
Documentação do Airflow de um operador específico para receber a 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 de nuvem.
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ê corretamente uma conexão.