Esegui un DAG Apache Airflow in Managed Airflow (Gen 2) (Google Cloud CLI)
Airflow gestito (3ª gen.) | Airflow gestito (2ª gen.) | Airflow gestito (1ª gen. precedente)
Questa guida rapida mostra come creare un ambiente Managed Service for Apache Airflow ed eseguire un DAG di Apache Airflow in Managed Airflow (Gen 2).
Se non hai mai utilizzato Airflow, consulta il tutorial sui concetti di Airflow nella documentazione di Apache Airflow per saperne di più su concetti, oggetti e utilizzo di Airflow.
Se vuoi utilizzare la console Google Cloud , consulta Esegui un DAG di Apache Airflow in Managed Service for Apache Airflow.
Se vuoi creare un ambiente utilizzando Terraform, consulta Creare ambienti (Terraform).
Prima di iniziare
- Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'autorizzazioneresourcemanager.projects.create. Scopri come concedere i ruoli.
-
Creare un progetto Google Cloud :
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il progetto Google Cloud che stai creando. -
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del progetto Google Cloud .
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'autorizzazioneresourcemanager.projects.create. Scopri come concedere i ruoli.
-
Creare un progetto Google Cloud :
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il progetto Google Cloud che stai creando. -
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del progetto Google Cloud .
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
-
Abilita l'API Managed Airflow:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.gcloud services enable composer.googleapis.com
-
Per ottenere le autorizzazioni necessarie per completare questa guida rapida, chiedi all'amministratore di concederti i seguenti ruoli IAM nel tuo progetto:
-
Per assegnare ruoli e autorizzazioni IAM:
Amministratore IAM progetto (
roles/resourcemanager.projectIamAdmin) -
Per creare un account di servizio per l'ambiente Managed Airflow:
Crea service account (
roles/iam.serviceAccountCreator) -
Per visualizzare, creare e gestire l'ambiente Managed Airflow:
- Amministratore ambienti e oggetti Storage (
roles/composer.environmentAndStorageObjectAdmin) - Utente Service Account (
roles/iam.serviceAccountUser)
- Amministratore ambienti e oggetti Storage (
-
Per visualizzare i log:
Visualizzatore log (
roles/logging.viewer)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
-
Per assegnare ruoli e autorizzazioni IAM:
Amministratore IAM progetto (
Crea il account di servizio di un ambiente
Quando crei un ambiente, specifichi un account di servizio. Questo service account è chiamato service account dell'ambiente. Il tuo ambiente utilizza questo account di serviziot per eseguire la maggior parte delle operazioni.
Il account di servizio per il tuo ambiente non è un account utente. Un account di serviziot è un particolare tipo di account utilizzato da un'applicazione o da un'istanza di macchina virtuale (VM), non da una persona fisica.
Per creare un account di servizio per il tuo ambiente:
Crea un nuovo service account, come descritto nella documentazione di Identity and Access Management.
Assegnagli un ruolo, come descritto nella documentazione di Identity and Access Management. Il ruolo richiesto è Worker Composer (
composer.worker).
Crea un ambiente
Se questo è il primo ambiente nel tuo progetto, aggiungi l'account service agent Managed Airflow come nuovo principal al account di servizio del tuo ambiente e concedigli il ruolo roles/composer.ServiceAgentV2Ext.
Per impostazione predefinita, il tuo ambiente utilizza il service account predefinito di Compute Engine e l'esempio seguente mostra come aggiungere questa autorizzazione.
# Get current project's project number
PROJECT_NUMBER=$(gcloud projects list \
--filter="$(gcloud config get-value project)" \
--format="value(PROJECT_NUMBER)" \
--limit=1)
# Add the Cloud Composer v2 API Service Agent Extension role
gcloud iam service-accounts add-iam-policy-binding \
ENVIRONMENT_SERVICE_ACCOUNT \
--member serviceAccount:service-$PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com \
--role roles/composer.ServiceAgentV2Ext
Sostituisci ENVIRONMENT_SERVICE_ACCOUNT con il account di servizio per il tuo ambiente che hai creato in precedenza.
Crea un nuovo ambiente denominato example-environment nella regione us-central1, con l'ultima versione di Managed Airflow (Gen 2).
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-2.17.6-airflow-2.11.1 \
--service-account ENVIRONMENT_SERVICE_ACCOUNT
Sostituisci ENVIRONMENT_SERVICE_ACCOUNT con il account di servizio per il tuo ambiente che hai creato in precedenza.
Crea un file DAG
Un DAG di Airflow è una raccolta di attività organizzate che vuoi pianificare ed eseguire. I DAG sono definiti in file Python standard.
Questa guida utilizza un DAG di Airflow di esempio definito nel file quickstart.py.
Il codice Python in questo file esegue le seguenti operazioni:
- Crea un DAG,
composer_sample_dag. Questo DAG viene eseguito ogni giorno. - Esegue un'attività,
print_dag_run_conf. L'attività stampa la configurazione dell'esecuzione del DAG utilizzando l'operatore bash.
Salva una copia del file quickstart.py sulla tua macchina locale:
Carica il file DAG nel bucket dell'ambiente
Ogni ambiente Managed Airflow ha un bucket Cloud Storage
associato. Airflow in Managed Airflow pianifica solo
i DAG che si trovano nella cartella /dags di questo bucket.
Per pianificare il DAG, carica quickstart.py dalla tua macchina locale nella cartella /dags del tuo ambiente:
Per caricare quickstart.py con Google Cloud CLI, esegui questo comando nella cartella in cui si trova il file quickstart.py:
gcloud composer environments storage dags import \
--environment example-environment --location us-central1 \
--source quickstart.py
Visualizzare il DAG
Dopo aver caricato il file DAG, Airflow esegue le seguenti operazioni:
- Analizza il file DAG che hai caricato. Potrebbero essere necessari alcuni minuti prima che il DAG sia disponibile per Airflow.
- Aggiunge il DAG all'elenco dei DAG disponibili.
- Esegue il DAG in base alla pianificazione fornita nel file DAG.
Controlla che il DAG venga elaborato senza errori e sia disponibile in Airflow visualizzandolo nell'interfaccia utente DAG. La UI DAG è l'interfaccia di Managed Airflow per visualizzare le informazioni sui DAG nella console Google Cloud . Managed Airflow fornisce anche l'accesso alla UI di Airflow, che è un'interfaccia web di Airflow nativa.
Attendi circa cinque minuti per dare ad Airflow il tempo di elaborare il file DAG che hai caricato in precedenza e di completare la prima esecuzione del DAG (spiegata in seguito).
Esegui questo comando in Google Cloud CLI. Questo comando esegue il
dags listcomando CLI di Airflow che elenca i DAG nel tuo ambiente.gcloud composer environments run example-environment \ --location us-central1 \ dags listControlla che il DAG
composer_quickstartsia elencato nell'output del comando.Output di esempio:
Executing the command: [ airflow dags list ]... Command has been started. execution_id=d49074c7-bbeb-4ee7-9b26-23124a5bafcb Use ctrl-c to interrupt the command dag_id | filepath | owner | paused ====================+=======================+==================+======= airflow_monitoring | airflow_monitoring.py | airflow | False composer_quickstart | dag-quickstart-af2.py | Composer Example | False
Visualizzare i dettagli dell'esecuzione del DAG
Una singola esecuzione di un DAG è chiamata esecuzione di DAG. Airflow esegue immediatamente un'esecuzione DAG per il DAG di esempio perché la data di inizio nel file DAG è impostata su ieri. In questo modo, Airflow recupera la pianificazione del DAG specificato.
Il DAG di esempio contiene un'attività, print_dag_run_conf, che esegue il comando echo
nella console. Questo comando restituisce i metadati relativi al DAG
(l'identificatore numerico dell'esecuzione del DAG).
Esegui questo comando in Google Cloud CLI. Questo comando elenca le esecuzioni di DAG
per il DAG composer_quickstart:
gcloud composer environments run example-environment \
--location us-central1 \
dags list-runs -- --dag-id composer_quickstart
Output di esempio:
dag_id | run_id | state | execution_date | start_date | end_date
====================+=============================================+=========+==================================+==================================+=================================
composer_quickstart | scheduled__2024-02-17T15:38:38.969307+00:00 | success | 2024-02-17T15:38:38.969307+00:00 | 2024-02-18T15:38:39.526707+00:00 | 2024-02-18T15:38:42.020661+00:00
L'interfaccia a riga di comando Airflow non fornisce un comando per visualizzare i log delle attività. Puoi utilizzare altri metodi per visualizzare i log delle attività di Airflow: interfaccia utente DAG di Managed Airflow, UI di Airflow o Cloud Logging. Questa guida mostra un modo per eseguire query su Cloud Logging per i log di un'esecuzione DAG specifica.
Esegui questo comando in Google Cloud CLI. Questo comando legge i log di
Cloud Logging per una specifica esecuzione del DAG composer_quickstart. L'argomento
--format formatta l'output in modo che venga visualizzato solo il testo del messaggio di log.
gcloud logging read \
--format="value(textPayload)" \
--order=asc \
"resource.type=cloud_composer_environment \
resource.labels.location=us-central1 \
resource.labels.environment_name=example-environment \
labels.workflow=composer_quickstart \
(labels.\"execution-date\"=\"RUN_ID\")"
Sostituisci:
RUN_IDcon il valorerun_iddell'output del comandotasks states-for-dag-runeseguito in precedenza. Ad esempio,2024-02-17T15:38:38.969307+00:00.
Output di esempio:
...
Starting attempt 1 of 2
Executing <Task(BashOperator): print_dag_run_conf> on 2024-02-17
15:38:38.969307+00:00
Started process 22544 to run task
...
Running command: ['/usr/bin/bash', '-c', 'echo 115746']
Output:
115746
...
Command exited with return code 0
Marking task as SUCCESS. dag_id=composer_quickstart,
task_id=print_dag_run_conf, execution_date=20240217T153838,
start_date=20240218T153841, end_date=20240218T153841
Task exited with return code 0
0 downstream tasks scheduled from follow-on schedule check
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il progetto Google Cloud con le risorse.
Elimina le risorse utilizzate in questo tutorial:
Elimina l'ambiente Managed Airflow:
Nella console Google Cloud , vai alla pagina Ambienti.
Seleziona
example-environmente fai clic su Elimina.Attendi l'eliminazione dell'ambiente.
Elimina il bucket del tuo ambiente. L'eliminazione dell'ambiente Managed Airflow non comporta l'eliminazione del relativo bucket.
Nella console Google Cloud , vai alla pagina Storage > Browser.
Seleziona il bucket dell'ambiente e fai clic su Elimina. Ad esempio, questo bucket può essere denominato
us-central1-example-environ-c1616fe8-bucket.
Passaggi successivi