Configurazione di una connessione Apache Airflow utilizzando un segreto AWS Secrets Manager - 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à.

Configurazione di una connessione Apache Airflow utilizzando un segreto AWS Secrets Manager

AWS Secrets Manager è un backend Apache Airflow alternativo supportato in un ambiente Amazon Managed Workflows for Apache Airflow. Questa guida mostra come archiviare in modo sicuro i segreti per le variabili di Apache Airflow e una connessione Apache Airflow su Amazon Managed Workflows for Apache Airflow. AWS Secrets Manager

Nota

Fase uno: fornire ad Amazon l'autorizzazione MWAA ad accedere alle chiavi segrete di Secrets Manager

Il ruolo di esecuzione per il tuo MWAA ambiente Amazon richiede l'accesso in lettura alla chiave segreta AWS Secrets Manager. La seguente IAM policy consente l'accesso in lettura/scrittura utilizzando la policy AWS gestita SecretsManagerReadWrite.

Per allegare la policy al tuo ruolo di esecuzione
  1. Apri la pagina Ambienti sulla MWAA console Amazon.

  2. Scegli un ambiente.

  3. Scegli il tuo ruolo di esecuzione nel riquadro Autorizzazioni.

  4. Scegli Collega policy.

  5. Digita SecretsManagerReadWrite nel campo di testo delle politiche di filtro.

  6. Scegli Collega policy.

Se non desideri utilizzare una politica di autorizzazione AWS gestita, puoi aggiornare direttamente il ruolo di esecuzione del tuo ambiente per consentire qualsiasi livello di accesso alle risorse di Secrets Manager. Ad esempio, la seguente dichiarazione politica concede l'accesso in lettura a tutti i segreti creati in una AWS regione specifica in Secrets Manager.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": "arn:aws:secretsmanager:us-west-2:012345678910:secret:*" }, { "Effect": "Allow", "Action": "secretsmanager:ListSecrets", "Resource": "*" } ] }

Fase due: creare il backend Secrets Manager come opzione di configurazione di Apache Airflow

La sezione seguente descrive come creare un'opzione di configurazione Apache Airflow sulla MWAA console Amazon per il AWS Secrets Manager backend. Se utilizzi un'impostazione di configurazione con lo stesso nome inairflow.cfg, la configurazione creata nei passaggi seguenti avrà la precedenza e sostituirà le impostazioni di configurazione.

  1. Apri la pagina Ambienti sulla MWAA console Amazon.

  2. Scegli un ambiente.

  3. Scegli Modifica.

  4. Scegli Next (Successivo).

  5. Scegli Aggiungi configurazione personalizzata nel riquadro delle opzioni di configurazione Airflow. Aggiungi le seguenti coppie chiave-valore:

    1. secrets.backend: airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend

    2. secrets.backend_kwargs: {"connections_prefix" : "airflow/connections", "variables_prefix" : "airflow/variables"} Questo configura Apache Airflow per cercare stringhe e variabili di connessione in e percorsi. airflow/connections/* airflow/variables/*

      Puoi utilizzare uno schema di ricerca per ridurre il numero di API chiamate che Amazon MWAA effettua a Secrets Manager per tuo conto. Se non specifichi un modello di ricerca, Apache Airflow cerca tutte le connessioni e le variabili nel backend configurato. Specificando uno schema, si restringono i possibili percorsi di visualizzazione di Apache Airflow. Ciò riduce i costi quando utilizzi Secrets Manager con AmazonMWAA.

      Per specificare un modello di ricerca, specifica i parametri connections_lookup_pattern andvariables_lookup_pattern. Questi parametri accettano una RegEx stringa come input. Ad esempio, per cercare segreti che iniziano contest, inserisci quanto segue persecrets.backend_kwargs:

      { "connections_prefix": "airflow/connections", "connections_lookup_pattern": "^test", "variables_prefix" : "airflow/variables", "variables_lookup_pattern": "^test" }
      Nota

      Per utilizzare connections_lookup_pattern evariables_lookup_pattern, è necessario installare la apache-airflow-providers-amazon versione 7.3.0 o successiva. Per ulteriori informazioni sull'aggiornamento dei pacchetti del provider alle versioni più recenti, vedere. Specificare pacchetti di provider più recenti

  6. Seleziona Salva.

Fase tre: generare una stringa di connessione Apache Airflow AWS URI

Per creare una stringa di connessione, utilizzate il tasto «tab» sulla tastiera per indentare le coppie chiave-valore nell'oggetto Connection. Consigliamo inoltre di creare una variabile per l'extraoggetto nella sessione di shell. La sezione seguente illustra i passaggi per generare una URI stringa di connessione Apache Airflow per un MWAA ambiente Amazon utilizzando Apache Airflow o uno script Python.

Apache Airflow CLI

La seguente sessione di shell utilizza l'Airflow CLI locale per generare una stringa di connessione. Se non lo hai CLI installato, ti consigliamo di usare lo script Python.

  1. Apri una sessione di shell Python:

    python3
  2. Immetti il comando seguente:

    >>> import json
  3. Immetti il comando seguente:

    >>> from airflow.models.connection import Connection
  4. Crea una variabile nella tua sessione di shell per l'extraoggetto. Sostituisci i valori di esempio in YOUR_EXECUTION_ROLE_ARN con il ruolo di esecuzione ARN e la regione in YOUR_REGION (ad esempious-east-1).

    >>> extra=json.dumps({'role_arn': 'YOUR_EXECUTION_ROLE_ARN', 'region_name': 'YOUR_REGION'})
  5. Crea l'oggetto di connessione. Sostituisci il valore di esempio myconn con il nome della connessione Apache Airflow.

    >>> myconn = Connection(
  6. Usa il tasto «tab» sulla tastiera per indentare ciascuna delle seguenti coppie chiave-valore nell'oggetto di connessione. Sostituisci i valori di esempio in red.

    1. Specificate il tipo di AWS connessione:

      ... conn_id='aws',
    2. Specificate l'opzione del database Apache Airflow:

      ... conn_type='mysql',
    3. Specificare l'interfaccia utente di Apache Airflow URL su Amazon: MWAA

      ... host='288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com/home',
    4. Specificate l'ID della chiave di AWS accesso (nome utente) per accedere ad AmazonMWAA:

      ... login='YOUR_AWS_ACCESS_KEY_ID',
    5. Specificate la chiave di accesso AWS segreta (password) per accedere ad AmazonMWAA:

      ... password='YOUR_AWS_SECRET_ACCESS_KEY',
    6. Specificate la variabile di sessione della extra shell:

      ... extra=extra
    7. Chiudi l'oggetto di connessione.

      ... )
  7. Stampa la URI stringa di connessione:

    >>> myconn.get_uri()

    Dovresti vedere la URI stringa di connessione nella risposta:

    'mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA&region_name=us-east-1'
Python script

Il seguente script Python non richiede Apache Airflow. CLI

  1. Copiate il contenuto del seguente esempio di codice e salvatelo localmente con nome. mwaa_connection.py

    import urllib.parse conn_type = 'YOUR_DB_OPTION' host = 'YOUR_MWAA_AIRFLOW_UI_URL' port = 'YOUR_PORT' login = 'YOUR_AWS_ACCESS_KEY_ID' password = 'YOUR_AWS_SECRET_ACCESS_KEY' role_arn = urllib.parse.quote_plus('YOUR_EXECUTION_ROLE_ARN') region_name = 'YOUR_REGION' conn_string = '{0}://{1}:{2}@{3}:{4}?role_arn={5}&region_name={6}'.format(conn_type, login, password, host, port, role_arn, region_name) print(conn_string)
  2. Sostituisci i segnaposto in red.

  3. Eseguite lo script seguente per generare una stringa di connessione.

    python3 mwaa_connection.py

Fase quattro: Aggiungere le variabili in Secrets Manager

La sezione seguente descrive come creare il segreto per una variabile in Secrets Manager.

Per creare il segreto
  1. Apri la AWS Secrets Manager console.

  2. Scegli Archivia un nuovo segreto.

  3. Scegli Altro tipo di segreto.

  4. In Specificare le coppie chiave/valore da memorizzare in questo riquadro segreto, scegli Testo normale.

  5. Aggiungi il valore della variabile come testo semplice nel seguente formato.

    "YOUR_VARIABLE_VALUE"

    Ad esempio, per specificare un numero intero:

    14

    Ad esempio, per specificare una stringa:

    "mystring"
  6. Per la chiave di crittografia, scegli un'opzione AWS KMS chiave dall'elenco a discesa.

  7. Inserisci un nome nel campo di testo per Nome segreto nel seguente formato.

    airflow/variables/YOUR_VARIABLE_NAME

    Per esempio:

    airflow/variables/test-variable
  8. Scegli Next (Successivo).

  9. Nella pagina Configura segreto, nel riquadro Nome e descrizione segreti, procedi come segue.

    1. Per Nome segreto, fornisci un nome per il tuo segreto.

    2. (Facoltativo) Per Descrizione, fornisci una descrizione del tuo segreto.

    Scegli Next (Successivo).

  10. In Configura rotazione (facoltativo), lascia le opzioni predefinite e scegli Avanti.

  11. Ripeti questi passaggi in Secrets Manager per tutte le variabili aggiuntive che desideri aggiungere.

  12. Nella pagina di revisione, controlla il tuo segreto, quindi scegli Store.

Fase cinque: aggiungere la connessione in Secrets Manager

La sezione seguente descrive come creare il segreto per la stringa di connessione URI in Secrets Manager.

Per creare il segreto
  1. Apri la AWS Secrets Manager console.

  2. Scegli Archivia un nuovo segreto.

  3. Scegli Altro tipo di segreto.

  4. Nel riquadro Specificare le coppie chiave/valore da memorizzare in questo riquadro segreto, scegli Testo normale.

  5. Aggiungi la URI stringa di connessione come testo semplice nel seguente formato.

    YOUR_CONNECTION_URI_STRING

    Per esempio:

    mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA&region_name=us-east-1
    avvertimento

    Apache Airflow analizza ciascuno dei valori nella stringa di connessione. Non è necessario utilizzare virgolette singole o doppie, altrimenti analizzerà la connessione come una singola stringa.

  6. Per la chiave di crittografia, scegli un'opzione AWS KMS chiave dall'elenco a discesa.

  7. Inserisci un nome nel campo di testo per Nome segreto nel seguente formato.

    airflow/connections/YOUR_CONNECTION_NAME

    Per esempio:

    airflow/connections/myconn
  8. Scegli Next (Successivo).

  9. Nella pagina Configura segreto, nel riquadro Nome e descrizione segreti, procedi come segue.

    1. Per Nome segreto, fornisci un nome per il tuo segreto.

    2. (Facoltativo) Per Descrizione, fornisci una descrizione del tuo segreto.

    Scegli Next (Successivo).

  10. In Configura rotazione (facoltativo), lascia le opzioni predefinite e scegli Avanti.

  11. Ripeti questi passaggi in Secrets Manager per tutte le variabili aggiuntive che desideri aggiungere.

  12. Nella pagina di revisione, controlla il tuo segreto, quindi scegli Store.

Codice di esempio

Risorse

  • Per ulteriori informazioni sulla configurazione dei segreti di Secrets Manager utilizzando la console e il AWS CLI, vedere Create a secret nella Guida per l'AWS Secrets Manager utente.

  • Usa uno script Python per migrare un grande volume di variabili e connessioni Apache Airflow a Secrets Manager in Move your Apache Airflow connections and variable to. AWS Secrets Manager

Fasi successive