Creazione di una SSH connessione utilizzando SSHOperator - 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à.

Creazione di una SSH connessione utilizzando SSHOperator

L'esempio seguente descrive come utilizzare il SSHOperator in un grafo aciclico diretto (DAG) per connetterti a un'EC2istanza Amazon remota dal tuo ambiente Amazon Managed Workflows for Apache Airflow. Puoi utilizzare un approccio simile per connetterti a qualsiasi istanza remota con accesso. SSH

Nell'esempio seguente, carichi una chiave SSH segreta (.pem) dags nella directory del tuo ambiente su Amazon S3. Quindi, installi le dipendenze necessarie utilizzando requirements.txt e creando una nuova connessione Apache Airflow nell'interfaccia utente. Infine, scrivi un messaggio DAG che crea una SSH connessione all'istanza remota.

Versione

Prerequisiti

Per utilizzare il codice di esempio in questa pagina, avrai bisogno di quanto segue:

Autorizzazioni

  • Non sono necessarie autorizzazioni aggiuntive per utilizzare l'esempio di codice in questa pagina.

Requisiti

Aggiungere il seguente parametro requirements.txt per installare il apache-airflow-providers-ssh pacchetto sul server Web. Una volta aggiornato l'ambiente e dopo che Amazon avrà installato MWAA correttamente la dipendenza, nell'interfaccia utente verrà visualizzato un nuovo tipo di SSHconnessione.

-c https://raw.githubusercontent.com/apache/airflow/constraints-Airflow-version/constraints-Python-version.txt apache-airflow-providers-ssh
Nota

-cdefinisce i vincoli URL in. requirements.txt Ciò garantisce che Amazon MWAA installi la versione del pacchetto corretta per il tuo ambiente.

Copia la tua chiave segreta su Amazon S3

Usa il seguente AWS Command Line Interface comando per copiare la .pem chiave dags nella directory del tuo ambiente in Amazon S3.

$ aws s3 cp your-secret-key.pem s3://your-bucket/dags/

Amazon MWAA copia il contenutodags, inclusa la .pem chiave, nella /usr/local/airflow/dags/ directory locale. In questo modo, Apache Airflow può accedere alla chiave.

Crea una nuova connessione Apache Airflow

Per creare una nuova SSH connessione utilizzando l'interfaccia utente di Apache Airflow
  1. Apri la pagina Ambienti sulla MWAA console Amazon.

  2. Dall'elenco degli ambienti, scegli Open Airflow UI per il tuo ambiente.

  3. Nella pagina dell'interfaccia utente di Apache Airflow, scegli Amministratore dalla barra di navigazione in alto per espandere l'elenco a discesa, quindi scegli Connessioni.

  4. Nella pagina Elenco connessioni, scegli + o il pulsante Aggiungi un nuovo record per aggiungere una nuova connessione.

  5. Nella pagina Aggiungi connessione, aggiungi le seguenti informazioni:

    1. Per ID di connessione, immetteressh_new.

    2. Per Tipo di connessione, scegli SSHdall'elenco a discesa.

      Nota

      Se il tipo di SSHconnessione non è disponibile nell'elenco, Amazon MWAA non ha installato il apache-airflow-providers-ssh pacchetto richiesto. Aggiorna il requirements.txt file per includere questo pacchetto, quindi riprova.

    3. Per Host, inserisci l'indirizzo IP dell'EC2istanza Amazon a cui desideri connetterti. Ad esempio 12.345.67.89.

    4. Per Nome utente, inserisci ec2-user se ti stai connettendo a un'EC2istanza Amazon. Il tuo nome utente potrebbe essere diverso, a seconda del tipo di istanza remota a cui desideri connettere Apache Airflow.

    5. Per Extra, inserisci la seguente coppia chiave-valore nel formato: JSON

      { "key_file": "/usr/local/airflow/dags/your-secret-key.pem" }

      Questa coppia chiave-valore indica ad Apache Airflow di cercare la chiave segreta nella directory locale. /dags

Esempio di codice

Quanto segue DAG utilizza SSHOperator per connettersi all'EC2istanza Amazon di destinazione, quindi esegue il comando hostname Linux per stampare il nome dell'istanza. Puoi modificarlo DAG per eseguire qualsiasi comando o script sull'istanza remota.

  1. Apri un terminale e vai alla directory in cui è memorizzato il DAG codice. Per esempio:

    cd dags
  2. Copia il contenuto del seguente esempio di codice e salvalo localmente con nomessh.py.

    from airflow.decorators import dag from datetime import datetime from airflow.providers.ssh.operators.ssh import SSHOperator @dag( dag_id="ssh_operator_example", schedule_interval=None, start_date=datetime(2022, 1, 1), catchup=False, ) def ssh_dag(): task_1=SSHOperator( task_id="ssh_task", ssh_conn_id='ssh_new', command='hostname', ) my_ssh_dag = ssh_dag()
  3. Esegui il AWS CLI comando seguente per DAG copiarlo nel bucket del tuo ambiente, quindi attivalo DAG utilizzando l'interfaccia utente di Apache Airflow.

    $ aws s3 cp your-dag.py s3://your-environment-bucket/dags/
  4. In caso di successo, vedrai un risultato simile al seguente nei log delle attività di: ssh_task ssh_operator_example DAG

    [2022-01-01, 12:00:00 UTC] {{base.py:79}} INFO - Using connection to: id: ssh_new. Host: 12.345.67.89, Port: None,
    Schema: , Login: ec2-user, Password: None, extra: {'key_file': '/usr/local/airflow/dags/your-secret-key.pem'}
    [2022-01-01, 12:00:00 UTC] {{ssh.py:264}} WARNING - Remote Identification Change is not verified. This won't protect against Man-In-The-Middle attacks
    [2022-01-01, 12:00:00 UTC] {{ssh.py:270}} WARNING - No Host Key Verification. This won't protect against Man-In-The-Middle attacks
    [2022-01-01, 12:00:00 UTC] {{transport.py:1819}} INFO - Connected (version 2.0, client OpenSSH_7.4)
    [2022-01-01, 12:00:00 UTC] {{transport.py:1819}} INFO - Authentication (publickey) successful!
    [2022-01-01, 12:00:00 UTC] {{ssh.py:139}} INFO - Running command: hostname
    [2022-01-01, 12:00:00 UTC]{{ssh.py:171}} INFO - ip-123-45-67-89.us-west-2.compute.internal
    [2022-01-01, 12:00:00 UTC] {{taskinstance.py:1280}} INFO - Marking task as SUCCESS. dag_id=ssh_operator_example, task_id=ssh_task, execution_date=20220712T200914, start_date=20220712T200915, end_date=20220712T200916