Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Questa sezione descrive come creare, configurare ed eseguire un ambiente Airflow locale utilizzando lo strumento dell'interfaccia a riga di comando dello sviluppo locale di Composer.
Informazioni sullo strumento di interfaccia a riga di comando per lo sviluppo locale di Composer
Lo strumento dell'interfaccia a riga di comando locale per lo sviluppo locale di Composer semplifica lo sviluppo dei DAG di Apache Airflow per Cloud Composer eseguendo in locale un ambiente Airflow. Questo l'ambiente Airflow locale utilizza l'immagine di uno specifico Cloud Composer completamente gestita.
Puoi creare un ambiente Airflow locale in base a un ambiente Cloud Composer esistente. In questo caso, l'ambiente Airflow locale prende l'elenco dei pacchetti PyPI installati e della variabile di ambiente dal tuo ambiente Cloud Composer.
Puoi utilizzare questo ambiente Airflow locale per scopi di test e sviluppo, ad esempio per testare il nuovo codice DAG, i pacchetti PyPI o le opzioni di configurazione di Airflow.
Prima di iniziare
Lo strumento dell'interfaccia a riga di comando locale di sviluppo di Composer crea ambienti Airflow locali in un in cui esegui il comando
composer-dev create
. Per accedere in un secondo momento al tuo ambiente Airflow locale, esegui i comandi dello strumento nel percorso in cui hai creato inizialmente l'ambiente locale. Tutti i dati per l'ambiente locale vengono archiviati in una sottodirectory nel percorso in cui hai creato l'ambiente locale:./composer/<local_environment_name>
.Il computer deve avere spazio di archiviazione sufficiente per memorizzare le immagini di Cloud Composer. Lo strumento dell'interfaccia a riga di comando dello sviluppo locale di Composer archivia un file immagine per ciascuno Versione di Cloud Composer. Ad esempio, se disponi di due ambienti Airflow con diverse versioni di Cloud Composer, Lo strumento di interfaccia a riga di comando per lo sviluppo locale di Composer archivia due elementi di Cloud Composer in formato Docker.
Lo strumento dell'interfaccia a riga di comando per lo sviluppo locale di Composer utilizza un output colorato. Puoi disattivare l'output colorato con la variabile
NO_COLOR=1
:NO_COLOR=1 composer-dev <other commands>
.Se hai un solo ambiente locale, puoi omettere il valore nome da tutti i comandi
composer-dev
, ad eccezione dirun-airflow-cmd
.Installa le dipendenze dello strumento dell'interfaccia a riga di comando di Composer per lo sviluppo locale:
- Versioni Python 3.7-3.10 con
pip
- Google Cloud CLI
- Versioni Python 3.7-3.10 con
Installa Docker. Docker deve essere installati e in esecuzione nel sistema locale. Per verificare che Docker sia in esecuzione, puoi eseguire qualsiasi comando dell'interfaccia a riga di comando Docker, ad esempio
docker ps
.
Configura le credenziali
Se non l'hai già fatto, Ottieni nuove credenziali utente da utilizzare per le credenziali predefinite dell'applicazione:
gcloud auth application-default login
Accedi a gcloud CLI utilizzando il tuo Account Google:
gcloud auth login
Tutte le chiamate API eseguite dallo strumento CLI di sviluppo locale di Composer e dai DAG vengono eseguite dall'account che utilizzi in gcloud CLI. Ad esempio, se un DAG nel tuo ambiente Airflow locale legge i contenuti di un bucket Cloud Storage, questo account deve disporre delle autorizzazioni per accedere al bucket. È diverso da Cloud Composer ambienti in cui l'account di servizio di un ambiente effettua le chiamate.
Installa lo strumento CLI di sviluppo locale di Composer
Clona il repository dell'interfaccia a riga di comando dello sviluppo locale di Composer:
git clone https://github.com/GoogleCloudPlatform/composer-local-dev.git
Nella directory di primo livello del repository clonato, esegui:
pip install .
A seconda della configurazione di pip
, il percorso in cui è installato lo strumento
potrebbe non essere presente nella variabile PATH
. In questo caso, pip
mostra un avviso
per creare un nuovo messaggio email. Puoi utilizzare le informazioni di questo messaggio di avviso per aggiungere questa directory alla variabile PATH
nel sistema operativo.
Creare un ambiente Airflow locale con una versione specifica di Cloud Composer
Per elencare le versioni disponibili di Cloud Composer, esegui:
composer-dev list-available-versions --include-past-releases --limit 10
Per creare un ambiente Airflow locale con i parametri predefiniti, esegui:
composer-dev create \
--from-image-version IMAGE_VERSION \
LOCAL_ENVIRONMENT_NAME
Altri parametri:
composer-dev create \
--from-image-version IMAGE_VERSION \
--project PROJECT_ID \
--port WEB_SERVER_PORT \
--dags-path LOCAL_DAGS_PATH \
LOCAL_ENVIRONMENT_NAME
Sostituisci:
IMAGE_VERSION
con il nome dell'immagine Cloud Composer.PROJECT_ID
con l'ID progetto.WEB_SERVER_PORT
con la porta su cui il server web Airflow deve rimanere in ascolto.LOCAL_DAGS_PATH
con il percorso di una directory locale in cui si trovano i file DAG individuarlo.LOCAL_ENVIRONMENT_NAME
con il nome di questo ambiente Airflow locale.
Esempio:
composer-dev create \
--from-image-version composer-2.9.7-airflow-2.9.3 \
example-local-environment
Crea un ambiente Airflow locale da un ambiente Cloud Composer
Solo le seguenti informazioni vengono recuperate da Cloud Composer questo ambiente:
- Versione immagine (versioni di Cloud Composer e del flusso d'aria utilizzato nel tuo ambiente).
- Elenco dei pacchetti PyPI personalizzati installati nel tuo ambiente.
Elenco commentato dei nomi delle variabili di ambiente impostate in completamente gestito di Google Cloud.
Altre informazioni e parametri di configurazione dall'ambiente, ad esempio: I file DAG, la cronologia delle esecuzioni dei DAG, le variabili Airflow e le connessioni non vengono copiati dal tuo ambiente Cloud Composer.
Per creare un ambiente Airflow locale da un ambiente Cloud Composer esistente:
composer-dev create LOCAL_ENVIRONMENT_NAME \
--from-source-environment ENVIRONMENT_NAME \
--location LOCATION \
--project PROJECT_ID \
--port WEB_SERVER_PORT \
--dags-path LOCAL_DAGS_PATH
Sostituisci:
LOCAL_ENVIRONMENT_NAME
con un nome per l'ambiente Airflow locale.ENVIRONMENT_NAME
con il nome dell'ambiente Cloud Composer.LOCATION
con la regione in cui si trova l'ambiente Cloud Composer individuarlo.PROJECT_ID
con l'ID progetto.WEB_SERVER_PORT
con una porta per il server web Airflow locale.LOCAL_DAGS_PATH
con un percorso di una directory locale in cui si trovano i DAG individuarlo.
Esempio:
composer-dev create example-local-environment \
--from-source-environment example-environment \
--location us-central1 \
--project example-project \
--port 8081 \
--dags-path example_directory/dags
Avvia un ambiente Airflow locale
Per avviare un ambiente Airflow locale, esegui:
composer-dev start LOCAL_ENVIRONMENT_NAME
Sostituisci:
LOCAL_ENVIRONMENT_NAME
con il nome di un ambiente Airflow locale.
Interrompere o riavviare un ambiente Airflow locale
Quando riavvii un ambiente Airflow locale, l'interfaccia a riga di comando locale di sviluppo di Composer riavvia il container Docker in cui è in esecuzione l'ambiente. Tutti i componenti di Airflow vengono arrestati e riavviati. Di conseguenza, tutte le esecuzioni di DAG eseguite durante un riavvio vengono contrassegnate come non riuscite.
Per riavviare o avviare un ambiente Airflow locale arrestato, esegui:
composer-dev restart LOCAL_ENVIRONMENT_NAME
Sostituisci:
LOCAL_ENVIRONMENT_NAME
con il nome di un ambiente Airflow locale.
Per arrestare un ambiente Airflow locale, esegui:
composer-dev stop LOCAL_ENVIRONMENT_NAME
Aggiungi e aggiorna i DAG
I DAG sono archiviati nella directory specificata in --dags-path
quando hai creato il tuo ambiente Airflow locale. Per impostazione predefinita, questa directory è ./composer/<local_environment_name>/dags
. Puoi ottenere
utilizzata dal tuo ambiente con il comando describe
.
Per aggiungere e aggiornare i DAG, modifica i file in questa directory. Non è necessario riavvia l'ambiente Airflow locale.
Visualizza i log dell'ambiente Airflow locale
Puoi visualizzare i log recenti da un container Docker che esegue il tuo Airflow locale completamente gestito di Google Cloud. In questo modo, puoi monitorare gli eventi relativi ai container e controllare i log di Airflow per rilevare errori come i conflitti di dipendenza causati dall'installazione dei pacchetti PyPI.
Per visualizzare i log di un container Docker che esegue il tuo ambiente Airflow locale, esegui:
composer-dev logs LOCAL_ENVIRONMENT_NAME --max-lines 10
Per seguire il flusso di log, ometti l'argomento --max-lines
:
composer-dev logs LOCAL_ENVIRONMENT_NAME
Esegui un comando dell'interfaccia a riga di comando Airflow
Puoi eseguire i comandi dell'interfaccia a riga di comando di Airflow nella tua Ambiente Airflow.
Per eseguire un comando dell'interfaccia a riga di comando di Airflow:
composer-dev run-airflow-cmd LOCAL_ENVIRONMENT_NAME \
SUBCOMMAND SUBCOMMAND_ARGUMENTS
Esempio:
composer-dev run-airflow-cmd example-local-environment dags list -o table
Configurare gli ambienti Airflow locali
Lo strumento dell'interfaccia a riga di comando dello sviluppo locale Composer archivia i parametri di configurazione
Ambiente Airflow, come le variabili di ambiente e il pacchetto PyPI
nella directory dell'ambiente locale
(./composer/<local_environment_name>
)
La configurazione viene applicata quando viene avviato un ambiente Airflow locale. Per Ad esempio, se aggiungi requisiti in conflitto per il pacchetto PyPI, invece, Composer Local Lo strumento di interfaccia a riga di comando di sviluppo segnala gli errori all'avvio dell'ambiente locale.
Le connessioni Airflow vengono memorizzate nel database dell'ambiente Airflow locale. Puoi configurarli eseguendo un comando Airflow CLI o memorizzando i parametri di connessione nelle variabili di ambiente. Per ulteriori informazioni sui modi per creare e configurare le connessioni, consulta Gestire le connessioni nella documentazione di Airflow.
Ottieni un elenco e lo stato degli ambienti Airflow locali
Per elencare tutti gli ambienti Airflow locali disponibili e visualizzarne lo stato:
composer-dev list
Per descrivere un ambiente specifico e ottenere dettagli come la versione dell'immagine, il percorso dei DAG e l'URL del server web di un ambiente:
composer-dev describe LOCAL_ENVIRONMENT_NAME
Sostituisci:
LOCAL_ENVIRONMENT_NAME
con il nome dell'ambiente Airflow locale.
Elenca le immagini utilizzate dagli ambienti Airflow locali
Per elencare tutte le immagini utilizzate dallo strumento CLI di sviluppo locale di Composer, esegui:
docker images --filter=reference='*/cloud-airflow-releaser/*/*'
Installare plug-in e modificare i dati
I plug-in e i dati per un ambiente Airflow locale vengono recuperati
nella directory dell'ambiente locale: ./composer/<local_environment_name>/data
e
./composer/<local_environment_name>/plugins
).
Per modificare i contenuti delle directory /data
e /plugins
, aggiungi o rimuovi
in queste directory. Docker propaga automaticamente le modifiche ai file al tuo ambiente Airflow locale.
Lo strumento di interfaccia a riga di comando dello sviluppo locale di Composer non supporta la specifica di un'interfaccia a riga di comando diversa. una directory per dati e plug-in.
Configura le variabili di ambiente
Per configurare le variabili di ambiente, modifica variables.env
nella directory dell'ambiente:
./composer/<local_environment_name>/variables.env
.
Il file variables.env
deve contenere definizioni di coppie chiave-valore, una riga per ciascuna
variabile di ambiente. Per modificare le opzioni di configurazione di Airflow, utilizza il formato
AIRFLOW__SECTION__KEY
. Per ulteriori informazioni sulle
le variabili di ambiente, consulta
Riferimento per la configurazione di Airflow.
EXAMPLE_VARIABLE=True
ANOTHER_VARIABLE=test
AIRFLOW__WEBSERVER__DAG_DEFAULT_VIEW=graph
Per applicare le modifiche, riavvia l'ambiente Airflow locale.
Installare o rimuovere pacchetti PyPI
Per installare o rimuovere i pacchetti PyPI, modifica il file requirements.txt
nella
directory dell'ambiente: ./composer/<local_environment_name>/requirements.txt
.
I requisiti devono seguire il formato specificato in PEP-508, dove ogni requisito è specificato in lettere minuscole e consiste nel nome del pacchetto con extra facoltativi e specificatori di versione.
Per applicare le modifiche, riavvia l'ambiente Airflow locale.
Passa a un'altra immagine di Cloud Composer
Puoi utilizzare qualsiasi immagine Cloud Composer con lo strumento CLI Composer Local Development e passare da un'immagine all'altra. Questo approccio è diverso eseguire l'upgrade del tuo ambiente Cloud Composer, perché di configurazione dell'ambiente Airflow locale vengono applicati .
Ad esempio, dopo che una nuova versione di Cloud Composer puoi cambiare l'ambiente per utilizzare la nuova versione e mantenere esistente dell'ambiente Airflow locale. Per fare un altro esempio, passare da una versione di Airflow all'altra all'interno di un ambiente Versione di Cloud Composer.
Per modificare l'immagine dell'ambiente utilizzata dall'ambiente Airflow locale:
Modifica il file di configurazione dell'ambiente locale:
./composer/<local_environment_name>/config.json
.Modifica il valore del parametro
composer_image_version
. Per visualizzare i valori disponibili, puoi: elencare le versioni di Cloud Composer disponibili.Per applicare le modifiche, riavvia l'ambiente Airflow locale.
Eliminare un ambiente Airflow locale
Attenzione:assicurati di aver salvato tutti i dati richiesti dall'ambiente, come log e configurazione.
Per eliminare un ambiente Airflow locale, esegui questo comando:
composer-dev remove LOCAL_ENVIRONMENT_NAME
Se l'ambiente è in esecuzione, aggiungi il flag --force
per forzarne la rimozione.
Eliminare le immagini Docker
Per eliminare tutte le immagini scaricate dallo strumento dell'interfaccia a riga di comando dello sviluppo locale di Composer, esegui:
docker rmi $(docker images --filter=reference='*/cloud-airflow-releaser/*/*' -q)
Risoluzione dei problemi
Questa sezione fornisce soluzioni ai problemi più comuni.
Impossibile avviare un ambiente locale su macOS
Se hai installato il pacchetto composer-dev
in una directory a cui Docker non può accedere, l'ambiente locale potrebbe non avviarsi.
Ad esempio, se è installato Python nella directory /opt
, come quando
installarlo con la configurazione Homebrew predefinita su macOS, quindi
Il pacchetto composer-dev
è installato anche nella directory /opt
. Poiché
Docker è conforme alle regole sandbox di Apple, la directory /opt
non è
disponibili per impostazione predefinita. Inoltre, non puoi aggiungerlo tramite l'interfaccia utente (Impostazioni
> Risorse > Condivisione file).
In questo caso, lo strumento dell'interfaccia a riga di comando per lo sviluppo locale di Composer genera un messaggio di errore. simile all'esempio seguente:
Failed to create container with an error: 400 Client Error for ...
Bad Request ("invalid mount config for type "bind": bind source path does not exist:
/opt/homebrew/lib/python3.9/site-packages/composer_local_dev/docker_files/entrypoint.sh
Possible reason is that composer-dev was installed in the path that is
not available to Docker. See...")
Puoi utilizzare una delle seguenti soluzioni:
- Installa Python o il pacchetto
composer-dev
in una directory diversa, in modo che Docker possa accedere al pacchetto. - Modifica manualmente
~/Library/Group\ Containers/group.com.docker/settings.json
file e aggiungi/opt
afilesharingDirectories
.