Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Questa pagina descrive come gestire le connessioni Airflow nel tuo ambiente e accedervi dai DAG.
Informazioni sulle connessioni Airflow
Le connessioni Aiflow memorizzano le credenziali e altre informazioni di connessione, ad esempio nomi utente, stringhe di connessione e password. I DAG utilizzano le connessioni comunicare e accedere alle risorse in Google Cloud e in altri servizi dai tuoi DAG.
Gli operatori Airflow nei tuoi DAG utilizzano una connessione predefinita per l'operatore o specifichi un nome di connessione personalizzato.
Informazioni sulla sicurezza della connessione
La maggior parte degli operatori Airflow non accetta direttamente le credenziali. Utilizzano, invece, Connessioni Airflow.
Quando crei un nuovo ambiente, Cloud Composer genera un
chiave fernet permanente univoca per l'ambiente e protegge gli extra di connessione
per impostazione predefinita. Puoi visualizzare fernet_key
nella pagina Configurazione nell'interfaccia utente di Airflow.
Per ulteriori informazioni sulla protezione di connessioni e password in Airflow, vedi Protezione delle connessioni e Mascheramento dei dati sensibili.
Informazioni sui tipi di connessione
Airflow utilizza connessioni di diversi tipi per connettersi a servizi specifici. Ad esempio, il tipo di connessione Google Cloud 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. Per
Ad esempio, puoi utilizzare la connessione da apache-airflow-providers-google
senza installare pacchetti PyPI personalizzati.
Connessioni preconfigurate
Cloud Composer configura le seguenti connessioni predefinite nel completamente gestito di Google Cloud. Puoi usare queste connessioni per accedere alle risorse nel tuo progetto senza doverle configurare.
google_cloud_default
bigquery_default
google_cloud_datastore_default
google_cloud_storage_default
Aggiungere una connessione in Secret Manager
Puoi memorizzare una connessione in Secret Manager senza aggiungerla a Airflow. Consigliamo di utilizzare questo approccio per l'archiviazione di credenziali altre informazioni sensibili.
Per aggiungere una connessione in Secret Manager:
Aggiungi un secret con il nome corrisponde allo schema 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 parametro il secret. Ad esempio:
{ "conn_type": "mysql", "host": "example.com", "login": "login", "password": "password", "port": "9000" }
Per ulteriori informazioni sul formato di connessione JSON, consulta la documentazione di Airflow.
Formato URI
Aggiungi la rappresentazione URI della connessione come valore dell'attributo secret:
Il secret deve archiviare un Rappresentazione URI di la connessione. Ad esempio,
mysql://login:password@example.com:9000
.L'URI deve essere codificato come URL. Ad esempio, una password contenente un simbolo di spazio deve essere codificata come URL come segue:
mysql://login:secret%20password@example.com:9000
.
Airflow ha un metodo pratico per la generazione di URI di connessione. Un esempio di come codificare un URL complesso con elementi extra JSON è disponibile nella documentazione di Airflow.
Verifica che tutti i parametri di connessione siano letti correttamente da Secret Manager.
Aggiungi una connessione in Airflow
In alternativa all'archiviazione delle connessioni in Secret Manager, puoi archiviarli in Airflow.
Per aggiungere una connessione in Airflow:
Interfaccia a riga di comando di Airflow
Esegui l'
connections add
Interfaccia a riga di comando di Airflow
tramite Google Cloud CLI. Ad esempio:
In 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
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
In 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"
Sostituisci quanto segue:
ENVIRONMENT_NAME
: il nome del tuo ambiente.LOCATION
: la regione in cui si trova l'ambiente.
UI di Airflow
Segui la documentazione di Airflow sulla creazione di connessioni.
Verifica che Airflow legga correttamente una connessione
Puoi eseguire il comando connections get
Airflow CLI tramite
Google Cloud CLI per verificare
che una connessione venga letta correttamente. Ad esempio, se memorizzi una connessione
Secret Manager, offre un modo per verificare se
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_NAME
con il nome dell'ambiente.LOCATION
con la regione in cui si trova l'ambiente.CONNECTION_NAME
con il nome della connessione. Se la connessione è archiviati in Secret Manager, utilizza il nome connessione senza il prefisso di connessione. Ad esempio, specificaexample_connection
anziché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.
Utilizza una connessione Secret Manager
Utilizza il nome della connessione senza il prefisso. Ad esempio, se il tuo secret
è denominato 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 di connessione predefinito utilizzato da un operatore. Ad esempio,
S3ToGCSOperator
L'operatore Airflow utilizza la connessione aws_default
tramite
predefinito. 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 può 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.