Managed Airflow (terza generazione) | Managed Airflow (seconda generazione) | Managed Airflow (prima generazione legacy)
Questa pagina descrive come gestire le connessioni Airflow nel tuo ambiente e accedervi dai DAG.
Informazioni sulle connessioni Airflow
Le connessioni Airflow archiviano le credenziali e altre informazioni di connessione, come nomi utente, stringhe di connessione e password. I DAG utilizzano le connessioni per comunicare e accedere alle risorse in Google Cloud e ad altri servizi dai DAG.
Gli operatori Airflow nei DAG utilizzano una connessione predefinita per l'operatore oppure puoi specificare un nome di connessione personalizzato.
Informazioni sulla sicurezza delle connessioni
La maggior parte degli operatori Airflow non accetta le credenziali direttamente. Utilizzano invece le connessioni Airflow.
Quando crei un nuovo ambiente, Airflow gestito genera una chiave Fernet univoca e permanente per l'ambiente e protegge gli extra di connessione per impostazione predefinita. Puoi visualizzare fernet_key nella pagina Configurazione dell'
UI di Airflow.
Per saperne di più su come vengono protette le connessioni e le password in Airflow, consulta Protezione delle connessioni e Mascheramento dei dati sensibili nella documentazione di Airflow.
Informazioni sui tipi di connessione
Airflow utilizza connessioni di diversi tipi per connettersi a servizi specifici. Ad esempio, il Google Cloud tipo di connessione si connette ad altri servizi in Google Cloud. Un altro esempio è il tipo di connessione S3 che si connette a un bucket Amazon S3.
Per aggiungere un tipo di connessione ad Airflow,
installa un pacchetto PyPI con quel tipo di connessione.
Alcuni pacchetti sono preinstallati nel tuo ambiente. Ad esempio, puoi utilizzare la connessione dal pacchetto apache-airflow-providers-google senza installare pacchetti PyPI personalizzati.
Connessioni preconfigurate
Managed Airflow configura le seguenti connessioni predefinite nel tuo ambiente. Puoi utilizzare queste connessioni per accedere alle risorse nel tuo progetto senza configurarle.
google_cloud_defaultbigquery_defaultgoogle_cloud_datastore_defaultgoogle_cloud_storage_default
Aggiungere una connessione in Secret Manager
Puoi archiviare una connessione in Secret Manager senza aggiungerla ad Airflow. Ti consigliamo di utilizzare questo approccio quando archivi credenziali e altre informazioni sensibili.
Per aggiungere una connessione in Secret Manager:
Aggiungi un secret con il nome che corrisponde al pattern per le connessioni.
Ad esempio:
airflow-connections-example_connection. Nei DAG, utilizza il nome della connessione senza il prefisso:example_connection.Aggiungi i parametri per la connessione:
Formato JSON
Aggiungi la rappresentazione JSON della connessione come valore del secret. Ad esempio:
{ "conn_type": "mysql", "host": "example.com", "login": "login", "password": "password", "port": "9000" }Per saperne di più sul formato di connessione JSON, consulta la documentazione di Airflow.
Formato URI
Aggiungi la rappresentazione URI della connessione come valore del secret:
Il secret deve memorizzare una rappresentazione URI della connessione. Ad esempio,
mysql://login:password@example.com:9000.L'URI deve essere con codifica URL. Ad esempio, una password che contiene un simbolo di spazio deve essere codificata con URL nel seguente modo:
mysql://login:secret%20password@example.com:9000.
Airflow ha un metodo pratico per generare URI di connessione. Un esempio di come codificare un URL complesso con extra JSON è disponibile nella documentazione di Airflow.
Verifica che tutti i parametri di connessione vengano letti correttamente da Secret Manager.
Aggiungere una connessione in Airflow
In alternativa all'archiviazione delle connessioni in Secret Manager, puoi archiviarle in Airflow.
Per aggiungere una connessione in Airflow:
Interfaccia a riga di comando Airflow
Esegui il
connections add comando dell'interfaccia a riga di comando Airflow
con Google Cloud CLI. Ad esempio:
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
Puoi anche utilizzare l'argomento --conn-uri:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
connections add -- \
--conn-uri "mysql://login:password@example.com:9000" \
example_connection
Sostituisci quanto segue:
ENVIRONMENT_NAME: il nome dell'ambiente.LOCATION: la regione in cui si trova l'ambiente.
UI di Airflow
Segui la documentazione di Airflow sulla creazione delle connessioni.
Verificare che Airflow legga correttamente una connessione
Puoi eseguire il comando dell'interfaccia a riga di comando Airflow connections get tramite Google Cloud CLI per verificare che una connessione venga letta correttamente. Ad esempio, se archivi una connessione in Secret Manager, questo ti consente di verificare se tutti i parametri di una connessione vengono letti da Airflow da un secret.
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
connections get \
-- CONNECTION_NAME
Sostituisci:
ENVIRONMENT_NAMEcon il nome dell'ambiente.LOCATIONcon la regione in cui si trova l'ambiente.CONNECTION_NAMEcon il nome della connessione. Se la connessione è archiviata in Secret Manager, utilizza il nome della connessione senza il prefisso della connessione. Ad esempio, specificaexample_connectionanzichéairflow-connections-example_connection_json.
Esempio:
gcloud composer environments run example-environment \
--location us-central1 \
connections get \
-- example_connection -o json
Utilizzare le connessioni Airflow nei DAG
Questa sezione mostra come accedere alla connessione da un DAG.
Utilizzare una connessione Secret Manager
Utilizza il nome della connessione senza il prefisso. Ad esempio, se il secret
si chiama airflow-connections-aws_s3, specifica
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 archivi una connessione predefinita in Secret Manager, puoi omettere il nome della connessione. Consulta la documentazione di Airflow per un operatore specifico per ottenere il nome della connessione predefinita utilizzata da un operatore. Ad esempio, l'operatore Airflow S3ToGCSOperator utilizza la connessione aws_default per impostazione predefinita. Puoi archiviare questa connessione predefinita in un secret denominato airflow-connections-aws_default.
Utilizzare una connessione archiviata in Airflow
Utilizza il nome della connessione, così come è definito in 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/')
Per utilizzare la connessione predefinita per un operatore, ometti il nome della connessione. Consulta la documentazione di Airflow per un operatore specifico per ottenere il nome della connessione predefinita utilizzata da un operatore. Ad esempio, l'operatore Airflow S3ToGCSOperator utilizza la connessione aws_default per impostazione predefinita.
Risoluzione dei problemi
Se il tuo ambiente non riesce ad accedere al secret archiviato in Secret Manager:
Assicurati che Secret Manager sia configurato nel tuo ambiente.
Verifica che il nome della connessione in Secret Manager corrisponda alla connessione utilizzata da Airflow. Ad esempio, per una connessione denominata
example_connection, il nome del secret èairflow-connections-example_connection.Verifica che Airflow legga correttamente una connessione.