Utilizzo di uno script di avvio con Amazon MWAA - Amazon Managed Workflows for Apache Airflow

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di uno script di avvio con Amazon MWAA

Uno script di avvio è uno script shell (.sh) ospitato nel bucket Amazon S3 del tuo ambiente in modo simile ai tuoi DAG, requisiti e plugin. Amazon MWAA esegue questo script durante l'avvio su ogni singolo componente di Apache Airflow (worker, scheduler e server Web) prima di installare i requisiti e inizializzare il processo Apache Airflow. Utilizza uno script di avvio per effettuare le seguenti operazioni:

  • Runtime di installazione: installa i runtime Linux richiesti dai flussi di lavoro e dalle connessioni.

  • Configurazione delle variabili di ambiente: imposta le variabili di ambiente per ogni componente di Apache Airflow. Sovrascrivi variabili comuni comePATH, PYTHONPATH e. LD_LIBRARY_PATH

  • Gestisci chiavi e token: trasferisci i token di accesso per gli archivi personalizzati requirements.txt e configura le chiavi di sicurezza.

I seguenti argomenti descrivono come configurare uno script di avvio per installare i runtime Linux, impostare le variabili di ambiente e risolvere i problemi correlati utilizzando Logs. CloudWatch

Configurare uno script di avvio

Per utilizzare uno script di avvio con il tuo ambiente Amazon MWAA esistente, carica un .sh file nel bucket Amazon S3 del tuo ambiente. Quindi, per associare lo script all'ambiente, specifica quanto segue nei dettagli dell'ambiente:

  • Il percorso URL di Amazon S3 allo script: il percorso relativo allo script ospitato nel tuo bucket, ad esempio, s3://mwaa-environment/startup.sh

  • L'ID della versione Amazon S3 dello script: la versione dello script di shell di avvio nel tuo bucket Amazon S3. Devi specificare l'ID della versione che Amazon S3 assegna al file ogni volta che aggiorni lo script. Gli ID di versione sono stringhe opache Unicode, con codifica UTF-8, pronte per l'URL e lunghe non più di 1.024 byte, ad esempio. 3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo

Per completare i passaggi descritti in questa sezione, utilizzate lo script di esempio seguente. Lo script restituisce il valore assegnato aMWAA_AIRFLOW_COMPONENT. Questa variabile di ambiente identifica ogni componente di Apache Airflow su cui viene eseguito lo script.

Copia il codice e salvalo localmente come. startup.sh

#!/bin/sh ​ echo "Printing Apache Airflow component" echo $MWAA_AIRFLOW_COMPONENT

Quindi, carica lo script nel tuo bucket Amazon S3.

AWS Management Console
Per caricare uno script di shell (console)
  1. Accedere alla AWS Management Console e aprire la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Dall'elenco dei bucket, scegli il nome del bucket associato al tuo ambiente.

  3. Nella scheda Objects (Oggetti), scegliere Upload (Carica).

  4. Nella pagina di caricamento, trascina e rilascia lo script di shell che hai creato.

  5. Scegli Carica.

Lo script viene visualizzato nell'elenco degli oggetti. Amazon S3 crea un nuovo ID di versione per il file. Se aggiorni lo script e lo carichi di nuovo utilizzando lo stesso nome di file, al file viene assegnato un nuovo ID di versione.

AWS CLI
Per creare e caricare uno script di shell (CLI)
  1. Apri un nuovo prompt dei comandi ed esegui il comando Amazon ls S3 per elencare e identificare il bucket associato al tuo ambiente.

    $ aws s3 ls
  2. Passa alla cartella in cui hai salvato lo script di shell. Utilizzalo cp in una nuova finestra di richiesta per caricare lo script nel tuo bucket. Sostituisci your-s3-bucket con le tue informazioni.

    $ aws s3 cp startup.sh s3://your-s3-bucket/startup.sh

    In caso di successo, Amazon S3 restituisce il percorso URL dell'oggetto:

    upload: ./startup.sh to s3://your-s3-bucket/startup.sh
  3. Usa il seguente comando per recuperare l'ID della versione più recente dello script.

    $ aws s3api list-object-versions --bucket your-s3-bucket --prefix startup --query 'Versions[?IsLatest].[VersionId]' --output text
    BbdVMmBRjtestta1EsVnbybZp1Wqh1J4

Questo ID di versione viene specificato quando si associa lo script a un ambiente.

Ora associate lo script al vostro ambiente.

AWS Management Console
Per associare lo script a un ambiente (console)
  1. Apri la pagina Ambienti sulla console Amazon MWAA.

  2. Seleziona la riga per l'ambiente che desideri aggiornare, quindi scegli Modifica.

  3. Nella pagina Specificare i dettagli, per il file di script di avvio, facoltativo, inserisci l'URL di Amazon S3 per lo script, ad esempio:. s3://your-mwaa-bucket/startup-sh.

  4. Scegli la versione più recente dall'elenco a discesa o sfoglia S3 per trovare lo script.

  5. Scegli Avanti, quindi procedi alla pagina Rivedi e salva.

  6. Rivedi le modifiche, quindi scegli Salva.

Gli aggiornamenti dell'ambiente possono richiedere dai 10 ai 30 minuti. Amazon MWAA esegue lo script di avvio al riavvio di ogni componente dell'ambiente.

AWS CLI
Per associare lo script a un ambiente (CLI)
  • Apri un prompt dei comandi e utilizzalo update-environment per specificare l'URL e l'ID di versione di Amazon S3 per lo script.

    $ aws mwaa update-environment \ --name your-mwaa-environment \ --startup-script-s3-path startup.sh \ --startup-script-s3-object-version BbdVMmBRjtestta1EsVnbybZp1Wqh1J4

    In caso di successo, Amazon MWAA restituisce l'Amazon Resource Name (ARN) per l'ambiente:

    arn:aws::airflow:us-west-2:123456789012:environment/your-mwaa-environment 

L'aggiornamento dell'ambiente può richiedere dai 10 ai 30 minuti. Amazon MWAA esegue lo script di avvio al riavvio di ogni componente dell'ambiente.

Infine, recupera gli eventi di registro per verificare che lo script funzioni come previsto. Quando attivi la registrazione per ogni componente di Apache Airflow, Amazon MWAA crea un nuovo gruppo di log e un nuovo flusso di log. Per ulteriori informazioni, consulta Tipi di log di Apache Airflow.

AWS Management Console
Per controllare il flusso di log di Apache Airflow (console)
  1. Apri la pagina Ambienti sulla console Amazon MWAA.

  2. Scegli il tuo ambiente.

  3. Nel riquadro Monitoraggio, scegli il gruppo di log per il quale desideri visualizzare i log, ad esempio il gruppo di log di Airflow scheduler.

  4. Nella CloudWatch console, dall'elenco Log stream, scegliete uno stream con il seguente prefisso:. startup_script_exection_ip

  5. Nel riquadro Registra eventi, vedrai l'output del comando che stampa il valore per. MWAA_AIRFLOW_COMPONENT Ad esempio, per i registri dello scheduler, otterrai quanto segue:

    Printing Apache Airflow component
    scheduler
    Finished running startup script. Execution time: 0.004s.
    Running verification
    Verification completed

È possibile ripetere i passaggi precedenti per visualizzare i registri dei lavoratori e dei server Web.

Installa i runtime Linux utilizzando uno script di avvio

Utilizza uno script di avvio per aggiornare il sistema operativo di un componente Apache Airflow e installa librerie di runtime aggiuntive da utilizzare con i flussi di lavoro. Ad esempio, lo script seguente viene eseguito yum update per aggiornare il sistema operativo.

Quando si esegue yum update uno script di avvio, è necessario escludere l'utilizzo di Python --exclude=python* come mostrato nell'esempio. Affinché il tuo ambiente funzioni, Amazon MWAA installa una versione specifica di Python compatibile con il tuo ambiente. Pertanto, non è possibile aggiornare la versione Python dell'ambiente utilizzando uno script di avvio.

#!/bin/sh echo "Updating operating system" sudo yum update -y --exclude=python*

Per installare i runtime su un componente specifico di Apache Airflow, usa le istruzioni condizionali MWAA_AIRFLOW_COMPONENT e eif. fi Questo esempio esegue un singolo comando per installare la libaio libreria sullo scheduler e sul worker, ma non sul server web.

Importante
  • Se è stato configurato un server Web privato, è necessario utilizzare la seguente condizione o fornire tutti i file di installazione localmente per evitare i timeout di installazione.

  • sudoDa utilizzare per eseguire operazioni che richiedono privilegi amministrativi.

#!/bin/sh if [[ "${MWAA_AIRFLOW_COMPONENT}" != "webserver" ]] then sudo yum -y install libaio fi

Puoi usare uno script di avvio per controllare la versione di Python.

#!/bin/sh export PYTHON_VERSION_CHECK=`python -c 'import sys; version=sys.version_info[:3]; print("{0}.{1}.{2}".format(*version))'` echo "Python version is $PYTHON_VERSION_CHECK"

Amazon MWAA non supporta l'override della versione Python predefinita, poiché ciò potrebbe causare incompatibilità con le librerie Apache Airflow installate.

Imposta le variabili di ambiente utilizzando uno script di avvio

Usa gli script di avvio per impostare le variabili di ambiente e modificare le configurazioni di Apache Airflow. Quanto segue definisce una nuova variabile,. ENVIRONMENT_STAGE È possibile fare riferimento a questa variabile in un DAG o nei moduli personalizzati.

#!/bin/sh export ENVIRONMENT_STAGE="development" echo "$ENVIRONMENT_STAGE"

Utilizzate gli script di avvio per sovrascrivere le variabili di sistema o di Apache Airflow più comuni. Ad esempio, si imposta LD_LIBRARY_PATH di indicare a Python di cercare i binari nel percorso specificato. Ciò consente di fornire file binari personalizzati per i flussi di lavoro utilizzando i plug-in:

#!/bin/sh export LD_LIBRARY_PATH=/usr/local/airflow/plugins/your-custom-binary

Variabili d'ambiente riservate

Amazon MWAA riserva un set di variabili ambientali critiche. Se sovrascrivi una variabile riservata, Amazon MWAA la ripristina ai valori predefiniti. Di seguito sono elencate le variabili riservate:

  • MWAA__AIRFLOW__COMPONENT— Utilizzato per identificare il componente Apache Airflow con uno dei seguenti valori:scheduler,worker, o. webserver

  • AIRFLOW__WEBSERVER__SECRET_KEY— La chiave segreta utilizzata per firmare in modo sicuro i cookie di sessione nel server web Apache Airflow.

  • AIRFLOW__CORE__FERNET_KEY— La chiave utilizzata per la crittografia e la decrittografia dei dati sensibili memorizzati nel database dei metadati, ad esempio le password di connessione.

  • AIRFLOW_HOME— Il percorso della home directory di Apache Airflow in cui i file di configurazione e i file DAG sono archiviati localmente.

  • AIRFLOW__CELERY__BROKER_URL— L'URL del broker di messaggi utilizzato per la comunicazione tra lo scheduler Apache Airflow e i nodi di lavoro Celery.

  • AIRFLOW__CELERY__RESULT_BACKEND— L'URL del database utilizzato per memorizzare i risultati delle attività di Celery.

  • AIRFLOW__CORE__EXECUTOR— La classe executor che Apache Airflow dovrebbe usare. In Amazon MWAA si tratta di CeleryExecutor

  • AIRFLOW__CORE__LOAD_EXAMPLES— Utilizzato per attivare o disattivare il caricamento di DAG di esempio.

  • AIRFLOW__METRICS__METRICS_BLOCK_LIST— Utilizzato per gestire i parametri di Apache Airflow emessi e acquisiti da Amazon MWAA in. CloudWatch

  • SQL_ALCHEMY_CONN— La stringa di connessione per il database RDS per PostgreSQL utilizzata per archiviare i metadati Apache Airflow in Amazon MWAA.

  • AIRFLOW__CORE__SQL_ALCHEMY_CONN— Utilizzata per lo stesso scopo, ma seguendo la nuova convenzione di denominazione di Apache SQL_ALCHEMY_CONN Airflow.

  • AIRFLOW__CELERY__DEFAULT_QUEUE— La coda predefinita per le attività di Celery in Apache Airflow.

  • AIRFLOW__OPERATORS__DEFAULT_QUEUE— La coda predefinita per le attività che utilizzano operatori Apache Airflow specifici.

  • AIRFLOW_VERSION— La versione Apache Airflow installata nell'ambiente Amazon MWAA.

  • AIRFLOW_CONN_AWS_DEFAULT— Le AWS credenziali predefinite utilizzate per l'integrazione con altri servizi in. AWS

  • AWS_DEFAULT_REGION— Imposta la AWS regione predefinita utilizzata con le credenziali predefinite per l'integrazione con altri AWS servizi.

  • AWS_REGION— Se definita, questa variabile di ambiente sostituisce i valori nella variabile di ambiente AWS_DEFAULT_REGION e nell'area di impostazione del profilo.

  • PYTHONUNBUFFERED— Utilizzato per inviare stdout e trasmettere i stderr log ai container.

  • AIRFLOW__METRICS__STATSD_ALLOW_LIST— Utilizzato per configurare un elenco consentito di prefissi separati da virgole per inviare le metriche che iniziano con gli elementi dell'elenco.

  • AIRFLOW__METRICS__STATSD_ON— Attiva l'invio di metriche a. StatsD

  • AIRFLOW__METRICS__STATSD_HOST— Utilizzato per connettersi al demone. StatSD

  • AIRFLOW__METRICS__STATSD_PORT— Utilizzato per connettersi al demone. StatSD

  • AIRFLOW__METRICS__STATSD_PREFIX— Utilizzato per connettersi al demone. StatSD

  • AIRFLOW__CELERY__WORKER_AUTOSCALE— Imposta la concorrenza massima e minima.

  • AIRFLOW__CORE__DAG_CONCURRENCY— Imposta il numero di istanze di attività che possono essere eseguite contemporaneamente dallo scheduler in un DAG.

  • AIRFLOW__CORE__MAX_ACTIVE_TASKS_PER_DAG— Imposta il numero massimo di attività attive per DAG.

  • AIRFLOW__CORE__PARALLELISM— Definisce il numero massimo di istanze di attività che possono essere eseguite contemporaneamente.

  • AIRFLOW__SCHEDULER__PARSING_PROCESSES— Imposta il numero massimo di processi analizzati dallo scheduler per pianificare i DAG.

  • AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__VISIBILITY_TIMEOUT— Definisce il numero di secondi che un lavoratore attende per confermare l'attività prima che il messaggio venga recapitato a un altro lavoratore.

  • AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__REGION— Imposta la AWS regione per il trasporto di Celery sottostante.

  • AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__PREDEFINED_QUEUES— Imposta la coda per il trasporto di Celery sottostante.

  • AIRFLOW_SCHEDULER_ALLOWED_RUN_ID_PATTERN— Utilizzato per verificare la validità dell'input per il run_id parametro quando si attiva un DAG.

  • AIRFLOW__WEBSERVER__BASE_URL— L'URL del server Web utilizzato per ospitare l'interfaccia utente di Apache Airflow.

Variabili d'ambiente non riservate

È possibile utilizzare uno script di avvio per sovrascrivere le variabili di ambiente non riservate. Di seguito sono elencate alcune di queste variabili comuni:

  • PATH— specifica un elenco di directory in cui il sistema operativo cerca file e script eseguibili. Quando un comando viene eseguito nella riga di comando, il sistema controlla le directory per trovare ed eseguire il comando. PATH Quando si creano operatori o attività personalizzati in Apache Airflow, potrebbe essere necessario affidarsi a script o eseguibili esterni. Se le directory contenenti questi file non si trovano nella PATH variabile specificata, le attività non vengono eseguite quando il sistema non è in grado di individuarle. Aggiungendo le directory appropriatePATH, le attività di Apache Airflow possono trovare ed eseguire gli eseguibili richiesti.

  • PYTHONPATH— Utilizzato dall'interprete Python per determinare in quali directory cercare i moduli e i pacchetti importati. È un elenco di directory che è possibile aggiungere al percorso di ricerca predefinito. Ciò consente all'interprete di trovare e caricare librerie Python non incluse nella libreria standard o installate nelle directory di sistema. Usa questa variabile per aggiungere i tuoi moduli e pacchetti Python personalizzati e usarli con i tuoi DAG.

  • LD_LIBRARY_PATH— Una variabile di ambiente utilizzata dal linker e dal loader dinamico in Linux per trovare e caricare librerie condivise. Specifica un elenco di directory contenenti librerie condivise, nelle quali viene effettuata la ricerca prima delle directory di libreria di sistema predefinite. Utilizzate questa variabile per specificare i file binari personalizzati.

  • CLASSPATH— Utilizzata da Java Runtime Environment (JRE) e Java Development Kit (JDK) per individuare e caricare classi, librerie e risorse Java in fase di esecuzione. È un elenco di directory, file JAR e archivi ZIP che contengono codice Java compilato.