Installa le dipendenze Python

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

In questa pagina viene descritto come installare i pacchetti Python per nell'ambiente Cloud Composer.

Informazioni sui pacchetti PyPI preinstallati e personalizzati nelle immagini Cloud Composer

Le immagini Cloud Composer contengono PyPI preinstallati e personalizzati pacchetti.

  • I pacchetti PyPI preinstallati sono pacchetti inclusi nella l'immagine Cloud Composer del tuo ambiente. Ciascuna L'immagine di Cloud Composer contiene Pacchetti PyPI che sono specifici per la tua versione di Cloud Composer e Airflow.

  • I pacchetti PyPI personalizzati sono pacchetti che puoi installare nel tuo ambiente oltre ai pacchetti preinstallati.

Opzioni per gestire i pacchetti PyPI per gli ambienti Cloud Composer

Opzione Da utilizzare se
Installa da PyPI Il modo predefinito per installare i pacchetti nel tuo ambiente
Installazione da un repository con un indirizzo IP pubblico Il pacchetto è ospitato in un repository di pacchetti diverso da PyPI. Questo repository ha un indirizzo IP pubblico
Installazione da un repository Artifact Registry Il pacchetto è ospitato in un repository Artifact Registry
Installazione da un repository nella rete del progetto Il tuo ambiente non ha accesso alla rete internet pubblica. Il pacchetto è ospitata in un repository di pacchetti nella rete del progetto.
Installa come libreria Python locale Impossibile trovare il pacchetto in PyPI e nella libreria non ha dipendenze esterne, come dist-packages.
Installare un plug-in Il pacchetto fornisce funzionalità specifiche per i plug-in, ad esempio la modifica l'interfaccia web di Airflow.
PythonVirtualenvOperator Non vuoi che il pacchetto venga installato per tutti i worker Airflow oppure le dipendenze sono in conflitto con i pacchetti preinstallati. Il pacchetto disponibile in PyPI e non ha dipendenze esterne.
KubernetesPodOperator e operatori GKE Hai bisogno di dipendenze esterne che non possono essere installate da pip, come dist-packages o che si trovano su un server pip interno. Questo richiede più configurazione e manutenzione. Consideralo solo se altre non funzionano.

Prima di iniziare

  • Devi avere un ruolo che possa attivare l'aggiornamento dell'ambiente operations. Inoltre, l'account di servizio dell'ambiente deve avere un ruolo con autorizzazioni sufficienti per eseguire operazioni di aggiornamento. Per ulteriori informazioni per ulteriori informazioni, consulta Controllo dell'accesso.
  • Se il tuo ambiente è protetto da un perimetro dei Controlli di servizio VPC, prima di installare le dipendenze PyPI devi concedere altre identità utente con accesso ai servizi che il perimetro di servizio protegge e abilita il supporto per un indirizzo PyPI privato repository Git.
  • I requisiti devono rispettare il formato specificato nella PEP-508 in cui ogni requisito è specificato in minuscolo e consiste nel pacchetto un nome con extra facoltativi e specificatori di versione.
  • Gli aggiornamenti delle dipendenze PyPI generano immagini Docker Artifact Registry.

  • Se un conflitto di dipendenze causa la mancata riuscita dell'aggiornamento, il tuo ambiente continua a essere eseguito con le dipendenze esistenti. Se l'operazione può iniziare a utilizzare le dipendenze Python appena installate dei tuoi DAG.

  • Progetti in cui L'API Cloud Composer è abilitata dal 29 aprile 2024 in poi. A meno che la tua organizzazione non sostituisca constraints/cloudbuild.disableCreateDefaultServiceAccount criterio, nuovi progetti non eseguirà il provisioning dell'account di servizio Cloud Build legacy sull'abilitazione dell'API. Poiché Cloud Build viene utilizzato per impostazione predefinita Installazione di pacchetti PyPI personalizzati in Cloud Composer l'installazione dei pacchetti potrebbe non riuscire. Per impostazione predefinita, verrà utilizzato l'account di servizio dell'ambiente, accertati di concedere le eventuali autorizzazioni aggiuntive necessarie per accedervi. a pacchetti privati a quell'account di servizio. Se vuoi che le tue build per l'esecuzione con un altro account, puoi eseguire l'override COMPOSER_AGENT_BUILD_SERVICE_ACCOUNT variabile di ambiente con l'account di servizio scelto. Questo account di servizio deve essere configurato per eseguire build in base alla documentazione di Cloud Build, e l'account di servizio dell'ambiente deve avere iam.serviceAccounts.actAs.

Visualizza l'elenco dei pacchetti PyPI

È possibile ottenere l'elenco dei pacchetti per il tuo ambiente in diversi formati.

Visualizza pacchetti preinstallati

Per visualizzare l'elenco dei pacchetti preinstallati per il tuo ambiente, vedi l'elenco dei pacchetti Immagine Cloud Composer del tuo ambiente.

Visualizza tutti i pacchetti

Per visualizzare tutti i pacchetti (preinstallati e personalizzati) nel tuo ambiente:

gcloud

Il seguente comando gcloud CLI restituisce il risultato il comando python -m pip list per un worker Airflow nel tuo ambiente. Puoi utilizzare l'argomento --tree per ottenere il risultato dell'oggetto Comando python -m pipdeptree --warn.

gcloud beta composer environments list-packages \
    ENVIRONMENT_NAME \
    --location LOCATION

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.

Visualizza pacchetti PyPI personalizzati

Console

  1. Nella console Google Cloud, vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Si apre la pagina Dettagli ambiente.

  3. Apri la scheda Pacchetti PyPI.

gcloud

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION \
  --format="value(config.softwareConfig.pypiPackages)"

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.

Installa pacchetti personalizzati in un ambiente Cloud Composer

Questa sezione descrive i diversi metodi per installare pacchetti personalizzati nel tuo completamente gestito di Google Cloud.

Installa pacchetti da PyPI

Un pacchetto può essere installato da Indice pacchetti Python se non ha o conflitti con pacchetti preinstallati.

Per aggiungere, aggiornare o eliminare le dipendenze Python per l'ambiente:

Console

  1. Nella console Google Cloud, vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Si apre la pagina Dettagli ambiente.

  3. Vai alla scheda Pacchetti PyPI.

  4. Fai clic su "Modifica".

  5. Fai clic su Aggiungi pacchetto.

  6. Nella sezione Pacchetti PyPI, specifica i nomi dei pacchetti, con ed extra di versione.

    Ad esempio:

    • scikit-learn
    • scipy, >=0.13.3
    • nltk, [machine_learning]
  7. Fai clic su Salva.

gcloud

gcloud CLI ha diversi agrumenti per lavorare con PyPI personalizzato di spedizione:

  • --update-pypi-packages-from-file sostituisce tutti i componenti personalizzati esistenti Pacchetti PyPI con i pacchetti specificati. Pacchetti che non vuoi vengono rimosse.
  • --update-pypi-package aggiorna o installa un pacchetto.
  • --remove-pypi-packages rimuove i pacchetti specificati.
  • --clear-pypi-packages rimuove tutti i pacchetti.

Installare i requisiti da un file

Il file requirements.txt deve contenere specificatore del requisito su un'interfaccia dalla riga di comando.

Ad esempio:

scipy>=0.13.3
scikit-learn
nltk[machine_learning]

Aggiorna l'ambiente e specifica il file requirements.txt nel dall'argomento --update-pypi-packages-from-file.

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
     --update-pypi-packages-from-file requirements.txt

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.

Installazione di un pacchetto

Aggiorna l'ambiente e specifica il pacchetto, la versione e gli extra in l'argomento --update-pypi-package.

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
     --update-pypi-package PACKAGE_NAMEEXTRAS_AND_VERSION

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.
  • PACKAGE_NAME con il nome del pacchetto.
  • EXTRAS_AND_VERSION con l'indicatore facoltativo versione e extra. A ometti versioni ed extra, specifica un valore vuoto.

Esempio:

gcloud composer environments update example-environment \
    --location us-central1 \
    --update-pypi-package "scipy>=0.13.3"

Rimuovere i pacchetti

Aggiorna il tuo ambiente e specifica i pacchetti che vuoi eliminare nell'argomento --remove-pypi-packages:

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
     --remove-pypi-packages PACKAGE_NAMES

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.
  • PACKAGE_NAMES con un elenco di pacchetti separati da virgole.

Esempio:

gcloud composer environments update example-environment \
    --location us-central1 \
    --remove-pypi-packages scipy,scikit-learn

API

Creare una richiesta API environments.patch.

In questa richiesta:

  1. Nel parametro updateMask, specifica la maschera:

    • Utilizza la maschera config.softwareConfig.pypiPackages per sostituire tutti quelli esistenti di pacchetti con i pacchetti specificati. Pacchetti che non vuoi vengono eliminate.
    • Usa config.softwareConfig.envVariables.PACKAGE_NAME per aggiungere o aggiornare un pacchetto specifico. Per aggiungere o aggiornare diversi pacchetti, specificare diverse maschere con virgole.
  2. Nel corpo della richiesta, specifica pacchetti e valori per le versioni e gli extra:

    {
      "config": {
        "softwareConfig": {
          "pypiPackages": {
            "PACKAGE_NAME": "EXTRAS_AND_VERSION"
          }
        }
      }
    }
    

    Sostituisci:

    • PACKAGE_NAME con il nome del pacchetto.
    • EXTRAS_AND_VERSION con l'indicatore facoltativo versione e extra. A ometti versioni ed extra, specifica un valore vuoto.
    • Per aggiungere più di un pacchetto, inserisci altre voci per i pacchetti. a pypiPackages.

Esempio:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.pypiPackages.EXAMPLE_PACKAGE,
// config.softwareConfig.pypiPackages.ANOTHER_PACKAGE
{
  "config": {
    "softwareConfig": {
      "pypiPackages": {
        "EXAMPLE_PACKAGE": "",
        "ANOTHER_PACKAGE": ">=1.10.3"
      }
    }
  }
}

Terraform

Il blocco pypi_packages nel blocco software_config specifica pacchetti.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    software_config {

      pypi_packages = {
          PACKAGE_NAME = "EXTRAS_AND_VERSION"
      }

    }
  }
}

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.
  • PACKAGE_NAME con il nome del pacchetto.
  • EXTRAS_AND_VERSION con l'indicatore facoltativo versione e extra. A ometti versioni ed extra, specifica un valore vuoto.
  • Per aggiungere più di un pacchetto, inserisci altre voci per i pacchetti. a pypi_packages.

Esempio:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    software_config {
      pypi_packages = {
          scipy = ">=1.10.3"
          scikit-learn = ""
          nltk = "[machine_learning]"
      }
    }
  }
}

Installa pacchetti da un repository pubblico

Puoi installare pacchetti ospitati in altri repository che hanno un indirizzo IP pubblico.

I pacchetti devono essere configurati correttamente per consentire l'installazione dello strumento pip predefinito.

Per eseguire l'installazione da un repository di pacchetti il cui indirizzo è pubblico:

  1. Crea un file pip.conf e includi le seguenti informazioni nel file, se applicabile:

    • URL del repository (nel parametro index-url)
    • Credenziali di accesso per il repository
    • Opzioni di installazione non predefinite di pip

    Esempio:

    [global]
    index-url=https://example.com/
    
  2. (Facoltativo) In alcuni casi, potresti voler recuperare pacchetti da più file ad esempio quando il repository pubblico contiene pacchetti da installare e che vuoi installare tutti gli altri di PyPI:

    1. Configura un repository virtuale Artifact Registry.
    2. Aggiungi la configurazione per più repository (incluso PyPI, se necessario) e definisci l'ordine in cui pip cerca nei repository.
    3. Specifica l'URL del repository virtuale nel parametro index-url.
  3. Determina l'URI del bucket dell'ambiente.

  4. Carica il file pip.conf nel file /config/pip/ cartella nel bucket dell'ambiente.

  5. Installa i pacchetti usando uno dei metodi disponibili.

Installa pacchetti da un repository Artifact Registry

Puoi archiviare i pacchetti in un repository Artifact Registry nel tuo progetto e configurare l'ambiente per l'installazione da lì.

Configura ruoli e autorizzazioni:

  1. L'account di servizio del tuo ambiente deve avere Ruolo iam.serviceAccountUser.

  2. Assicurati che l'account di servizio Cloud Build abbia autorizzazioni di lettura dal repository Artifact Registry.

  3. Se il tuo ambiente ha limitato l'accesso ad altri servizi in progetto, ad esempio se utilizzi Controlli di servizio VPC:

    1. Assegna le autorizzazioni per accedere al repository Artifact Registry per l'account di servizio dell'ambiente anziché Account di servizio Cloud Build.

    2. Assicurati che la connettività al repository Artifact Registry sia configurate nel progetto.

Per installare pacchetti PyPI personalizzati da un repository Artifact Registry:

  1. Crea un file pip.conf e includi le seguenti informazioni nel file, se applicabile:

    • URL del repository Artifact Registry (nel parametro index-url)
    • Credenziali di accesso per il repository
    • Opzioni di installazione non predefinite di pip

    Per un repository Artifact Registry, aggiungi /simple/ al repository URL:

    [global]
    index-url = https://us-central1-python.pkg.dev/example-project/example-repository/simple/
    
  2. (Facoltativo) In alcuni casi, potresti voler recuperare pacchetti da più file ad esempio quando il repository Artifact Registry contiene ad alcuni pacchetti specifici che desideri installare tutti gli altri pacchetti di PyPI:

    1. Configura un repository virtuale Artifact Registry.
    2. Aggiungi la configurazione per più repository (incluso PyPI, se necessario) e definisci l'ordine in cui pip cerca nei repository.
    3. Specifica l'URL del repository virtuale nel parametro index-url.
  3. Carica questo file pip.conf nel /config/pip/ cartella nel bucket dell'ambiente. Ad esempio: gs://us-central1-example-bucket/config/pip/pip.conf.

  4. Installa i pacchetti usando uno dei metodi disponibili.

Installa pacchetti da un repository privato

Puoi ospitare un repository privato nella rete del progetto e configurare per installare i pacchetti Python.

Configura ruoli e autorizzazioni:

  1. L'account di servizio per l'ambiente Cloud Composer deve hanno il ruolo iam.serviceAccountUser.

  2. Se installi pacchetti PyPI personalizzati da un repository nella cartella e questo repository non ha un indirizzo IP pubblico:

    1. Assegna le autorizzazioni per accedere a questo repository agli l'account di servizio.

    2. Assicurati che la connettività a questo repository sia configurata progetto.

Per installare pacchetti da un repository privato ospitato nella rete del tuo progetto:

  1. Crea un file pip.conf e includi le seguenti informazioni nel file, se applicabile:

    • Indirizzo IP del repository nella rete del progetto
    • Credenziali di accesso per il repository
    • Opzioni di installazione non predefinite di pip

    Esempio:

    [global]
    index-url=https://192.0.2.10/
    
  2. (Facoltativo) In alcuni casi, potresti voler recuperare pacchetti da più file ad esempio quando il repository privato contiene pacchetti da installare e che vuoi installare tutti gli altri di PyPI:

    1. Configura un repository virtuale Artifact Registry.
    2. Aggiungi la configurazione per più repository (incluso PyPI, se necessario) e definisci l'ordine in cui pip cerca nei repository.
    3. Specifica l'URL del repository virtuale nel parametro index-url.
  3. (Facoltativo) Nella versione 2.2.1 e versioni successive di Cloud Composer, puoi: utilizza un certificato personalizzato durante l'installazione di pacchetti dal tuo repository Git. Ecco come fare:

    1. Carica il file del certificato nel /config/pip/ nel bucket dell'ambiente.

    2. In pip.conf, specifica il nome del file del certificato nel cert . Non modificare la cartella /etc/pip/.

      Esempio:

      [global]
      cert =/etc/pip/example-certificate.pem
      
  4. Carica il file pip.conf nel file /config/pip/ cartella nel bucket dell'ambiente. Ad esempio: gs://us-central1-example-bucket/config/pip/pip.conf.

  5. Installa i pacchetti usando uno dei metodi disponibili.

Installa una libreria Python locale

Per installare una libreria Python interna o locale:

  1. Posiziona le dipendenze all'interno di una sottodirectory nel dags/ cartella nel bucket dell'ambiente. Per importare un modulo da un sottodirectory, ogni sottodirectory del percorso del modulo deve contenere un file di indicatori di pacchetto __init__.py.

    Nell'esempio seguente, la dipendenza è coin_module.py:

    dags/
      use_local_deps.py  # A DAG file.
      dependencies/
        __init__.py
        coin_module.py
    
  2. Importa la dipendenza dal file di definizione del DAG.

    Ad esempio:

from dependencies import coin_module

Usa pacchetti che dipendono da librerie di oggetti condivise

Alcuni pacchetti PyPI dipendono dalle librerie a livello di sistema. Sebbene Cloud Composer non supporti le librerie di sistema, puoi utilizzare le seguenti opzioni:

  • Utilizzare KubernetesPodOperator. Imposta l'immagine dell'operatore su un l'immagine build. Se si verificano pacchetti che non funzionano durante l'installazione a causa a una dipendenza dal sistema non soddisfatta, utilizza questa opzione.

  • Carica le librerie di oggetti condivise nel bucket del tuo ambiente. Se il tuo PyPI i pacchetti sono stati installati correttamente, ma non in fase di runtime. Utilizza questa opzione.

    1. Trova manualmente le librerie di oggetti condivise per la dipendenza PyPI (un file .so).
    2. Carica le librerie di oggetti condivise nella cartella /plugins del tuo del bucket dell'ambiente.
    3. Imposta la seguente variabile di ambiente: LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/airflow/gcs/plugins

Installa pacchetti in ambienti IP privati

Questa sezione spiega come installare pacchetti in ambienti IP privati.

A seconda di come configuri il progetto, l'ambiente potrebbe non avere l'accesso alla rete internet pubblica.

Ambiente IP privato con accesso a internet pubblico

Se il tuo ambiente IP privato può accedere alla rete internet pubblica, puoi installa i pacchetti utilizzando le opzioni per gli ambienti IP pubblici:

Ambiente IP privato senza accesso a internet

Se il tuo ambiente IP privato non ha accesso alla rete internet pubblica, puoi installare i pacchetti in uno dei seguenti modi:

  • Utilizza un repository PyPI privato ospitato nel repository in ogni rete.
  • Utilizza una VM server proxy nella rete del progetto per connetterti in un repository PyPI sulla rete internet pubblica. Specifica l'indirizzo proxy in il file /config/pip/pip.conf nel bucket dell'ambiente.
  • Utilizza un repository Artifact Registry come unica origine di pacchetti. Per farlo, ridefinisci il parametro index-url, come descritto.
  • Se il criterio di sicurezza consente l'accesso a indirizzi IP esterni dal tuo rete VPC, puoi abilitare l'installazione di pacchetti dai repository sulla rete internet pubblica configurando Cloud NAT.
  • Inserisci le dipendenze Python nella cartella /dags del bucket del tuo ambiente per installarle come librerie locali. Potrebbe non essere un è l'opzione ideale se l'albero delle dipendenze è grande.

Installa in un ambiente IP privato in base alle limitazioni relative alle località delle risorse

Mantenere il progetto in linea con la restrizione sulla località delle risorse requisiti impediscono l'uso di alcuni strumenti. In particolare, Cloud Build non può essere utilizzato per l'installazione di pacchetti, impedendo l'accesso diretto dei repository sulla rete internet pubblica.

Per installare le dipendenze Python in un ambiente di questo tipo, segui le indicazioni per un ambiente IP privato senza accesso a internet.

Installa una dipendenza Python in un ambiente IP privato in un perimetro dei Controlli di servizio VPC

La protezione del progetto con un Perimetro Controlli di servizio VPC comporta ulteriori limitazioni di sicurezza. In particolare, Cloud Build non può essere utilizzato per l'installazione di pacchetti, impedendo l'accesso diretto dei repository sulla rete internet pubblica.

Per installare le dipendenze Python per un ambiente IP privato all'interno di un perimetro, segui le indicazioni per gli ambienti IP privati senza accesso a internet.

Passaggi successivi