Mengkonfigurasi koneksi Apache Airflow menggunakan rahasia AWS Secrets Manager - Amazon Managed Workflows for Apache Airflow (MWAA)

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengkonfigurasi koneksi Apache Airflow menggunakan rahasia AWS Secrets Manager

AWS Secrets Manager adalah backend Apache Airflow alternatif yang didukung pada Alur Kerja Terkelola Amazon untuk lingkungan Apache Airflow. Panduan ini menunjukkan cara menggunakan untuk menyimpan rahasia dengan aman AWS Secrets Manager untuk variabel Apache Airflow dan koneksi Apache Airflow di Amazon Managed Workflows untuk Apache Airflow.

catatan

Langkah satu: Berikan Amazon MWAA izin untuk mengakses kunci rahasia Secrets Manager

Peran eksekusi untuk MWAA lingkungan Amazon Anda memerlukan akses baca ke kunci rahasia AWS Secrets Manager. IAMKebijakan berikut memungkinkan akses baca-tulis menggunakan kebijakan AWS terkelola SecretsManagerReadWrite.

Untuk melampirkan kebijakan ke peran eksekusi Anda
  1. Buka halaman Lingkungan di MWAA konsol Amazon.

  2. Pilih lingkungan.

  3. Pilih peran eksekusi Anda di panel Izin.

  4. Pilih Lampirkan kebijakan.

  5. Ketik SecretsManagerReadWrite di bidang teks Filter kebijakan.

  6. Pilih Lampirkan kebijakan.

Jika Anda tidak ingin menggunakan kebijakan izin AWS terkelola, Anda dapat langsung memperbarui peran eksekusi lingkungan Anda untuk mengizinkan tingkat akses apa pun ke sumber daya Secrets Manager Anda. Misalnya, pernyataan kebijakan berikut memberikan akses baca ke semua rahasia yang Anda buat di AWS Wilayah tertentu di 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": "*" } ] }

Langkah kedua: Buat backend Secrets Manager sebagai opsi konfigurasi Apache Airflow

Bagian berikut menjelaskan cara membuat opsi konfigurasi Apache Airflow di MWAA konsol Amazon untuk backend. AWS Secrets Manager Jika Anda menggunakan pengaturan konfigurasi dengan nama yang samaairflow.cfg, konfigurasi yang Anda buat dalam langkah-langkah berikut akan diutamakan dan mengganti pengaturan konfigurasi.

  1. Buka halaman Lingkungan di MWAA konsol Amazon.

  2. Pilih lingkungan.

  3. Pilih Edit.

  4. Pilih Berikutnya.

  5. Pilih Tambahkan konfigurasi khusus di panel Opsi konfigurasi Aliran Udara. Tambahkan pasangan kunci-nilai berikut:

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

    2. secrets.backend_kwargs: {"connections_prefix" : "airflow/connections", "variables_prefix" : "airflow/variables"} Ini mengkonfigurasi Apache Airflow untuk mencari string koneksi dan variabel di dan jalur. airflow/connections/* airflow/variables/*

      Anda dapat menggunakan pola pencarian untuk mengurangi jumlah API panggilan yang dilakukan Amazon MWAA ke Secrets Manager atas nama Anda. Jika Anda tidak menentukan pola pencarian, Apache Airflow mencari semua koneksi dan variabel di backend yang dikonfigurasi. Dengan menentukan pola, Anda mempersempit kemungkinan jalur yang terlihat Apache Airflow. Ini menurunkan biaya Anda saat menggunakan Secrets Manager dengan AmazonMWAA.

      Untuk menentukan pola pencarian, tentukan variables_lookup_pattern parameter connections_lookup_pattern dan. Parameter ini menerima RegEx string sebagai input. Misalnya, untuk mencari rahasia yang dimulaitest, masukkan yang berikut ini untuksecrets.backend_kwargs:

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

      Untuk menggunakan connections_lookup_pattern danvariables_lookup_pattern, Anda harus menginstal apache-airflow-providers-amazon versi 7.3.0 atau lebih tinggi. Untuk informasi lebih lanjut tentang memperbarui paket provder ke versi yang lebih baru, lihat. Menentukan paket penyedia yang lebih baru

  6. Pilih Simpan.

Langkah ketiga: Hasilkan string koneksi Apache Airflow AWS URI

Untuk membuat string koneksi, gunakan tombol “tab” pada keyboard Anda untuk membuat indentasi pasangan kunci-nilai di objek Connection. Kami juga merekomendasikan membuat variabel untuk extra objek dalam sesi shell Anda. Bagian berikut memandu Anda melalui langkah-langkah untuk menghasilkan URI string koneksi Apache Airflow untuk MWAA lingkungan Amazon menggunakan Apache Airflow atau skrip Python.

Apache Airflow CLI

Sesi shell berikut menggunakan Airflow lokal Anda CLI untuk menghasilkan string koneksi. Jika Anda belum CLI menginstal, kami sarankan menggunakan skrip Python.

  1. Buka sesi shell Python:

    python3
  2. Masukkan perintah berikut:

    >>> import json
  3. Masukkan perintah berikut:

    >>> from airflow.models.connection import Connection
  4. Buat variabel dalam sesi shell Anda untuk extra objek. Mengganti nilai sampel di YOUR_EXECUTION_ROLE_ARN dengan peran eksekusiARN, dan wilayah di YOUR_REGION (sepertius-east-1).

    >>> extra=json.dumps({'role_arn': 'YOUR_EXECUTION_ROLE_ARN', 'region_name': 'YOUR_REGION'})
  5. Buat objek koneksi. Gantikan nilai sampel myconn dengan nama koneksi Apache Airflow.

    >>> myconn = Connection(
  6. Gunakan tombol “tab” pada keyboard Anda untuk indentasi masing-masing pasangan kunci-nilai berikut di objek koneksi Anda. Mengganti nilai sampel di red.

    1. Tentukan jenis AWS koneksi:

      ... conn_id='aws',
    2. Tentukan opsi database Apache Airflow:

      ... conn_type='mysql',
    3. Tentukan UI Apache Airflow di URL Amazon: MWAA

      ... host='288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com/home',
    4. Tentukan ID kunci AWS akses (nama pengguna) untuk masuk ke AmazonMWAA:

      ... login='YOUR_AWS_ACCESS_KEY_ID',
    5. Tentukan kunci akses AWS rahasia (kata sandi) untuk masuk ke AmazonMWAA:

      ... password='YOUR_AWS_SECRET_ACCESS_KEY',
    6. Tentukan variabel sesi extra shell:

      ... extra=extra
    7. Tutup objek koneksi.

      ... )
  7. Cetak URI string koneksi:

    >>> myconn.get_uri()

    Anda akan melihat URI string koneksi dalam respons:

    '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

Script Python berikut tidak memerlukan Apache Airflow. CLI

  1. Salin isi contoh kode berikut dan simpan secara lokal sebagaimwaa_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. Gantikan placeholder di red.

  3. Jalankan skrip berikut untuk menghasilkan string koneksi.

    python3 mwaa_connection.py

Langkah empat: Tambahkan variabel di Secrets Manager

Bagian berikut menjelaskan cara membuat rahasia untuk variabel di Secrets Manager.

Untuk membuat rahasia
  1. Buka konsol AWS Secrets Manager.

  2. Pilih Simpan rahasia baru.

  3. Pilih jenis rahasia lainnya.

  4. Pada Tentukan pasangan kunci/nilai yang akan disimpan di panel rahasia ini, pilih Plaintext.

  5. Tambahkan nilai variabel sebagai Plaintext dalam format berikut.

    "YOUR_VARIABLE_VALUE"

    Misalnya, untuk menentukan bilangan bulat:

    14

    Misalnya, untuk menentukan string:

    "mystring"
  6. Untuk kunci Enkripsi, pilih opsi AWS KMS kunci dari daftar dropdown.

  7. Masukkan nama di bidang teks untuk nama Rahasia dalam format berikut.

    airflow/variables/YOUR_VARIABLE_NAME

    Sebagai contoh:

    airflow/variables/test-variable
  8. Pilih Berikutnya.

  9. Pada halaman Konfigurasi rahasia, pada nama rahasia dan deskripsi panel, lakukan hal berikut.

    1. Untuk nama Rahasia, berikan nama untuk rahasia Anda.

    2. (Opsional) Untuk Deskripsi, berikan deskripsi untuk rahasia Anda.

    Pilih Berikutnya.

  10. Pada rotasi Konfigurasi - opsional tinggalkan opsi default dan pilih Berikutnya.

  11. Ulangi langkah-langkah ini di Secrets Manager untuk setiap variabel tambahan yang ingin Anda tambahkan.

  12. Pada halaman Review, tinjau rahasia Anda, lalu pilih Store.

Langkah lima: Tambahkan koneksi di Secrets Manager

Bagian berikut menjelaskan cara membuat rahasia untuk string koneksi Anda URI di Secrets Manager.

Untuk membuat rahasia
  1. Buka konsol AWS Secrets Manager.

  2. Pilih Simpan rahasia baru.

  3. Pilih jenis rahasia lainnya.

  4. Pada Tentukan pasangan kunci/nilai yang akan disimpan di panel rahasia ini, pilih Plaintext.

  5. Tambahkan URI string koneksi sebagai Plaintext dalam format berikut.

    YOUR_CONNECTION_URI_STRING

    Sebagai contoh:

    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
    Awas

    Apache Airflow mem-parsing masing-masing nilai dalam string koneksi. Anda tidak boleh menggunakan tanda kutip tunggal atau ganda, atau itu akan mengurai koneksi sebagai string tunggal.

  6. Untuk kunci Enkripsi, pilih opsi AWS KMS kunci dari daftar dropdown.

  7. Masukkan nama di bidang teks untuk nama Rahasia dalam format berikut.

    airflow/connections/YOUR_CONNECTION_NAME

    Sebagai contoh:

    airflow/connections/myconn
  8. Pilih Berikutnya.

  9. Pada halaman Konfigurasi rahasia, pada nama rahasia dan deskripsi panel, lakukan hal berikut.

    1. Untuk nama Rahasia, berikan nama untuk rahasia Anda.

    2. (Opsional) Untuk Deskripsi, berikan deskripsi untuk rahasia Anda.

    Pilih Berikutnya.

  10. Pada rotasi Konfigurasi - opsional tinggalkan opsi default dan pilih Berikutnya.

  11. Ulangi langkah-langkah ini di Secrets Manager untuk setiap variabel tambahan yang ingin Anda tambahkan.

  12. Pada halaman Review, tinjau rahasia Anda, lalu pilih Store.

Kode sampel

Sumber daya

  • Untuk informasi selengkapnya tentang mengonfigurasi rahasia Secrets Manager menggunakan konsol dan AWS CLI, lihat Membuat rahasia di Panduan AWS Secrets Manager Pengguna.

  • Gunakan skrip Python untuk memigrasikan volume besar variabel Apache Airflow dan koneksi ke Secrets Manager di Pindahkan koneksi dan variabel Apache Airflow Anda. AWS Secrets Manager

Apa selanjutnya?