Gestione delle connessioni Airflow

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

In questa pagina viene descritto come gestire connessioni Airflow nelle tue e accedervi dai tuoi DAG.

Informazioni sulle connessioni Airflow

Le connessioni Aiflow archiviano le credenziali e altre informazioni di connessione, come nomi utente, stringhe di connessioni 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 DAG utilizzano una connessione predefinita per o specificare 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 in UI 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 tipi diversi per connettersi a servizi specifici. Ad esempio, Tipo di connessione Google Cloud si connette ad altri servizi in Google Cloud. Come ulteriore esempio, la connessione S3 si connette a un bucket Amazon S3.

Per aggiungere un tipo di connessione ad Airflow, installare 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

Aggiungi una connessione in Secret Manager

Puoi archiviare una connessione in Secret Manager, senza aggiungere in Airflow. Consigliamo di utilizzare questo approccio per l'archiviazione di credenziali altre informazioni sensibili.

Per aggiungere una connessione in Secret Manager:

  1. Configura Secret Manager per il tuo ambiente.

  2. 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.

  3. Aggiungi i parametri per la connessione:

    Formato JSON

    Aggiungi la rappresentazione JSON della connessione come valore del token il 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 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. Per Ad esempio, una password che contiene uno 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. Esempio di come codificare un URL complesso con JSON extra è disponibile in Documentazione di Airflow.

  4. Verifica che tutti i parametri di connessione siano legga 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:

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 connections get Airflow 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, specifica example_connection anziché airflow-connections-example_connection_json.

Esempio:

gcloud composer environments run example-environment \
    --location us-central1 \
    connections get \
    -- example_connection -o json

Usa 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 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.

Usa una connessione archiviata in Airflow

Utilizza il nome della connessione, così come viene 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 Documentazione di Airflow per un operatore specifico per ottenere la connessione predefinita nome usato 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:

  1. Assicurati che Secret Manager sia configurato completamente gestito di Google Cloud.

  2. 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.

  3. Verifica che Airflow legga correttamente una connessione.

Passaggi successivi