Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat SSH koneksi menggunakan SSHOperator
Contoh berikut menjelaskan cara Anda dapat menggunakan SSHOperator
dalam grafik asiklik terarah (DAG) untuk menyambung ke EC2 instans Amazon jarak jauh dari lingkungan Alur Kerja Terkelola Amazon untuk Apache Airflow. Anda dapat menggunakan pendekatan serupa untuk terhubung ke instans jarak jauh apa pun dengan SSH akses.
Dalam contoh berikut, Anda mengunggah kunci SSH rahasia (.pem
) ke dags
direktori lingkungan Anda di Amazon S3. Kemudian, Anda menginstal dependensi yang diperlukan menggunakan requirements.txt
dan membuat koneksi Apache Airflow baru di UI. Akhirnya, Anda menulis sebuah DAG yang membuat SSH koneksi ke instance jarak jauh.
Topik
Versi
Prasyarat
Untuk menggunakan kode sampel di halaman ini, Anda memerlukan yang berikut:
-
Kunci SSH rahasia. Contoh kode mengasumsikan Anda memiliki EC2 instans Amazon dan
.pem
di Wilayah yang sama dengan MWAA lingkungan Amazon Anda. Jika Anda tidak memiliki kunci, lihat Membuat atau mengimpor key pair di Panduan EC2 Pengguna Amazon.
Izin
-
Tidak diperlukan izin tambahan untuk menggunakan contoh kode di halaman ini.
Persyaratan
Tambahkan parameter berikut requirements.txt
untuk menginstal apache-airflow-providers-ssh
paket di server web. Setelah lingkungan Anda diperbarui dan Amazon MWAA berhasil menginstal dependensi, Anda akan melihat jenis SSHkoneksi baru di UI.
-c https://raw.githubusercontent.com/apache/airflow/constraints-
Airflow-version
/constraints-Python-version
.txt apache-airflow-providers-ssh
catatan
-c
mendefinisikan kendala URL dalam. requirements.txt
Ini memastikan bahwa Amazon MWAA menginstal versi paket yang benar untuk lingkungan Anda.
Salin kunci rahasia Anda ke Amazon S3
Gunakan AWS Command Line Interface perintah berikut untuk menyalin .pem
kunci Anda ke dags
direktori lingkungan Anda di Amazon S3.
$
aws s3 cp
your-secret-key
.pem s3://your-bucket
/dags/
Amazon MWAA menyalin kontendags
, termasuk .pem
kunci, ke /usr/local/airflow/dags/
direktori lokal, Dengan melakukan ini, Apache Airflow dapat mengakses kunci.
Buat koneksi Apache Airflow baru
Untuk membuat SSH koneksi baru menggunakan Apache Airflow UI
-
Buka halaman Lingkungan
di MWAA konsol Amazon. -
Dari daftar lingkungan, pilih Open Airflow UI untuk lingkungan Anda.
-
Pada halaman Apache Airflow UI, pilih Admin dari bilah navigasi atas untuk memperluas daftar dropdown, lalu pilih Connections.
-
Pada halaman Daftar Koneksi, pilih +, atau Tambahkan tombol catatan baru untuk menambahkan koneksi baru.
-
Pada halaman Add Connection, tambahkan informasi berikut:
-
Untuk Connection Id, masukkan
ssh_new
. -
Untuk Jenis Koneksi, pilih SSHdari daftar dropdown.
catatan
Jika jenis SSHkoneksi tidak tersedia dalam daftar, Amazon MWAA belum menginstal
apache-airflow-providers-ssh
paket yang diperlukan. Perbaruirequirements.txt
file Anda untuk menyertakan paket ini, lalu coba lagi. -
Untuk Host, masukkan alamat IP untuk EC2 instance Amazon yang ingin Anda sambungkan. Misalnya,
12.345.67.89
. -
Untuk Nama Pengguna, masukkan
ec2-user
jika Anda terhubung ke EC2 instans Amazon. Nama pengguna Anda mungkin berbeda, tergantung pada jenis instance jarak jauh yang ingin Anda sambungkan oleh Apache Airflow. -
Untuk Ekstra, masukkan pasangan kunci-nilai berikut dalam JSON format:
{ "key_file": "/usr/local/airflow/dags/
your-secret-key
.pem" }Pasangan kunci-nilai ini menginstruksikan Apache Airflow untuk mencari kunci rahasia di direktori lokal.
/dags
-
Contoh kode
Berikut ini DAG menggunakan SSHOperator
untuk menyambung ke EC2 instans Amazon target Anda, lalu menjalankan perintah hostname
Linux untuk mencetak nama instance. Anda dapat memodifikasi DAG untuk menjalankan perintah atau skrip apa pun pada instance jarak jauh.
-
Buka terminal, dan arahkan ke direktori tempat DAG kode Anda disimpan. Sebagai contoh:
cd dags
-
Salin isi contoh kode berikut dan simpan secara lokal sebagai
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()
-
Jalankan AWS CLI perintah berikut untuk menyalin DAG ke bucket lingkungan Anda, lalu picu DAG menggunakan Apache Airflow UI.
$
aws s3 cp
your-dag
.py s3://your-environment-bucket
/dags/ -
Jika berhasil, Anda akan melihat output yang mirip dengan yang berikut di log tugas untuk
ssh_task
dissh_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