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.
Argomenti
Versione
Prerequisiti
Per utilizzare il codice di esempio in questa pagina, avrai bisogno di quanto segue:
-
Una chiave SSH segreta. L'esempio di codice presuppone che tu abbia un'EC2istanza Amazon e una
.pem
nella stessa regione del tuo MWAA ambiente Amazon. Se non disponi di una chiave, consulta Creare o importare una coppia di chiavi nella Amazon EC2 User Guide.
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
-c
definisce 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
-
Apri la pagina Ambienti
sulla MWAA console Amazon. -
Dall'elenco degli ambienti, scegli Open Airflow UI per il tuo ambiente.
-
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.
-
Nella pagina Elenco connessioni, scegli + o il pulsante Aggiungi un nuovo record per aggiungere una nuova connessione.
-
Nella pagina Aggiungi connessione, aggiungi le seguenti informazioni:
-
Per ID di connessione, immettere
ssh_new
. -
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 ilrequirements.txt
file per includere questo pacchetto, quindi riprova. -
Per Host, inserisci l'indirizzo IP dell'EC2istanza Amazon a cui desideri connetterti. Ad esempio
12.345.67.89
. -
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. -
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.
-
Apri un terminale e vai alla directory in cui è memorizzato il DAG codice. Per esempio:
cd dags
-
Copia il contenuto del seguente esempio di codice e salvalo localmente con nome
ssh.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()
-
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/ -
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