

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
<a name="connections-secrets-manager"></a>

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

**catatan**  
Anda dikenakan biaya untuk rahasia yang Anda buat. Untuk informasi selengkapnya tentang harga Secrets Manager, lihat [AWS Harga](https://aws.amazon.com/secrets-manager/pricing/).
[AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store) juga didukung sebagai backend rahasia di Amazon MWAA. Untuk informasi selengkapnya, lihat [dokumentasi Amazon Provider Package](https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/secrets-backends/aws-ssm-parameter-store.html).

**Contents**
+ [

## Langkah satu: Berikan Amazon MWAA izin untuk mengakses kunci rahasia Secrets Manager
](#connections-sm-policy)
+ [

## Langkah kedua: Buat backend Secrets Manager sebagai opsi konfigurasi Apache Airflow
](#connections-sm-aa-configuration)
+ [

## Langkah ketiga: Hasilkan string URI koneksi Apache AWS Airflow
](#connections-sm-aa-uri)
+ [

## Langkah empat: Tambahkan variabel di Secrets Manager
](#connections-sm-createsecret-variables)
+ [

## Langkah lima: Tambahkan koneksi di Secrets Manager
](#connections-sm-createsecret-connection)
+ [

## Kode sampel
](#connections-sm-samples)
+ [

## Sumber Daya
](#connections-sm-blogs)
+ [

## Apa selanjutnya?
](#connections-sm-next-up)

## Langkah satu: Berikan Amazon MWAA izin untuk mengakses kunci rahasia Secrets Manager
<a name="connections-sm-policy"></a>

[Peran eksekusi](mwaa-create-role.md) untuk lingkungan Amazon MWAA Anda memerlukan akses baca ke kunci rahasia. AWS Secrets Manager Kebijakan IAM berikut memungkinkan akses baca-tulis menggunakan kebijakan -managed. AWS[SecretsManagerReadWrite](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/SecretsManagerReadWrite$jsonEditor)

**Untuk melampirkan kebijakan ke peran eksekusi Anda**

1. Buka halaman [Lingkungan](https://console.aws.amazon.com/mwaa/home#/environments) di konsol Amazon MWAA.

1. Pilih lingkungan.

1. Pilih peran eksekusi Anda di panel **Izin**.

1. Pilih **Lampirkan kebijakan**.

1. Ketik `SecretsManagerReadWrite` di bidang teks **Filter kebijakan**.

1. Pilih **Lampirkan kebijakan**.

Jika Anda tidak ingin menggunakan kebijakan izin yang AWS dikelola, 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 Wilayah AWS di Secrets Manager tertentu.

------
#### [ JSON ]

****  

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

------

## Langkah kedua: Buat backend Secrets Manager sebagai opsi konfigurasi Apache Airflow
<a name="connections-sm-aa-configuration"></a>

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

1. Buka halaman [Lingkungan](https://console.aws.amazon.com/mwaa/home#/environments) di konsol Amazon MWAA.

1. Pilih lingkungan.

1. Pilih **Edit**.

1. Pilih **Berikutnya**.

1. 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`**

   1. **`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](https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/secrets-backends/aws-secrets-manager.html#optional-lookup) untuk mengurangi jumlah panggilan API yang dilakukan Amazon MWAA ke Secrets Manager atas nama Anda. Jika Anda tidak menentukan pola pencarian, Apache Airflow akan mencari semua koneksi dan variabel di backend yang dikonfigurasi. Dengan menentukan pola, Anda mempersempit kemungkinan jalur yang dicari Apache Airflow. Ini menurunkan biaya Anda saat menggunakan Secrets Manager dengan Amazon MWAA.

      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 dimulai`test`, masukkan yang berikut ini untuk`secrets.backend_kwargs`:

      ```
      {
        "connections_prefix": "airflow/connections",
        "connections_lookup_pattern": "^test",
        "variables_prefix" : "airflow/variables",
        "variables_lookup_pattern": "^test"
      }
      ```
**catatan**  
Untuk menggunakan `connections_lookup_pattern` dan`variables_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. [Kendala berkas](connections-packages.md#connections-packages-constraints)

1. Pilih **Simpan**.

## Langkah ketiga: Hasilkan string URI koneksi Apache AWS Airflow
<a name="connections-sm-aa-uri"></a>

[Untuk membuat string koneksi, gunakan tombol “tab” pada keyboard Anda untuk membuat indentasi pasangan kunci-nilai di objek Connection.](https://airflow.apache.org/docs/stable/howto/connection/index.html) Kami juga merekomendasikan membuat variabel untuk `extra` objek dalam sesi shell Anda. Bagian berikut memandu Anda melalui langkah-langkah untuk [menghasilkan string URI koneksi Apache Airflow](https://airflow.apache.org/docs/apache-airflow/stable/howto/connection.html#generating-a-connection-uri) untuk lingkungan Amazon MWAA menggunakan Apache Airflow atau skrip Python.

------
#### [ Apache Airflow CLI ]

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

1. Buka sesi shell Python:

   ```
   python3
   ```

1. Masukkan perintah berikut:

   ```
   >>> import json
   ```

1. Masukkan perintah berikut:

   ```
   >>> from airflow.models.connection import Connection
   ```

1. Buat variabel dalam sesi shell Anda untuk `extra` objek. Gantikan nilai sampel *YOUR\$1EXECUTION\$1ROLE\$1ARN* dengan peran eksekusi ARN, dan wilayah di *us-east-1* (seperti`us-east-1`).

   ```
   >>> extra=json.dumps({'role_arn': 'YOUR_EXECUTION_ROLE_ARN', 'region_name': 'us-east-1'})
   ```

1. Buat objek koneksi. Gantikan nilai sampel `myconn` dengan nama koneksi Apache Airflow.

   ```
   >>> myconn = Connection(
   ```

1. Gunakan tombol “tab” pada keyboard Anda untuk indentasi setiap pasangan kunci-nilai berikut di objek koneksi Anda. Gantikan nilai sampel di*red*.

   1. Tentukan jenis AWS koneksi:

      ```
      ... conn_id='aws',
      ```

   1. Tentukan opsi database Apache Airflow:

      ```
      ... conn_type='mysql',
      ```

   1. Tentukan URL UI Apache Airflow di Amazon MWAA:

      ```
      ... host='288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com/home',
      ```

   1. Tentukan ID kunci AWS akses (nama pengguna) untuk masuk ke Amazon MWAA:

      ```
      ... login='YOUR_AWS_ACCESS_KEY_ID',
      ```

   1. Tentukan kunci akses AWS rahasia (kata sandi) untuk masuk ke Amazon MWAA:

      ```
      ... password='YOUR_AWS_SECRET_ACCESS_KEY',
      ```

   1. Tentukan variabel sesi `extra` shell:

      ```
      ... extra=extra
      ```

   1. Tutup objek koneksi.

      ```
      ... )
      ```

1. Cetak string URI koneksi:

   ```
   >>> myconn.get_uri()
   ```

   Lihat string URI 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 sebagai`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 = 'us-east-1'
   								
   								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)
   ```

1. Gantikan placeholder di. *red*

1. Jalankan skrip berikut untuk menghasilkan string koneksi.

   ```
   python3 mwaa_connection.py
   ```

------

## Langkah empat: Tambahkan variabel di Secrets Manager
<a name="connections-sm-createsecret-variables"></a>

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

**Untuk membuat rahasia**

1. Buka [konsol AWS Secrets Manager](https://console.aws.amazon.com/secretsmanager/home#/environments).

1. Pilih **Simpan rahasia baru**.

1. Pilih **jenis rahasia lainnya**.

1. Pada **Tentukan key/value pasangan yang akan disimpan di panel rahasia ini**, pilih **Plaintext**.

1. Tambahkan nilai variabel sebagai **Plaintext** dalam format berikut.

   ```
   "YOUR_VARIABLE_VALUE"
   ```

   Misalnya, untuk menentukan bilangan bulat:

   ```
   14
   ```

   Misalnya, untuk menentukan string:

   ```
   "mystring"
   ```

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

1. Masukkan nama di bidang teks untuk **nama Rahasia** dalam format berikut.

   ```
   airflow/variables/YOUR_VARIABLE_NAME
   ```

   Contoh:

   ```
   airflow/variables/test-variable
   ```

1. Pilih **Berikutnya**.

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

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

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

   Pilih **Berikutnya**.

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

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

1. Pada halaman **Review**, tinjau rahasia Anda, lalu pilih **Store**.

## Langkah lima: Tambahkan koneksi di Secrets Manager
<a name="connections-sm-createsecret-connection"></a>

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

**Untuk membuat rahasia**

1. Buka [konsol AWS Secrets Manager](https://console.aws.amazon.com/secretsmanager/home#/environments).

1. Pilih **Simpan rahasia baru**.

1. Pilih **jenis rahasia lainnya**.

1. Pada **Tentukan key/value pasangan yang akan disimpan di panel rahasia ini**, pilih **Plaintext**.

1. Tambahkan string URI koneksi sebagai **Plaintext** dalam format berikut.

   ```
   YOUR_CONNECTION_URI_STRING
   ```

   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 setiap nilai dalam string koneksi. Anda **tidak** boleh menggunakan tanda kutip tunggal atau ganda, atau mem-parsing koneksi sebagai string tunggal.

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

1. Masukkan nama di bidang teks untuk **nama Rahasia** dalam format berikut.

   ```
   airflow/connections/YOUR_CONNECTION_NAME
   ```

   Contoh:

   ```
   airflow/connections/myconn
   ```

1. Pilih **Berikutnya**.

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

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

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

   Pilih **Berikutnya**.

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

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

1. Pada halaman **Review**, tinjau rahasia Anda, lalu pilih **Store**.

## Kode sampel
<a name="connections-sm-samples"></a>
+ Pelajari cara menggunakan kunci rahasia untuk koneksi Apache Airflow `myconn` () di halaman ini menggunakan kode contoh di. [Menggunakan kunci rahasia AWS Secrets Manager untuk koneksi Apache Airflow](samples-secrets-manager.md)
+ Pelajari cara menggunakan kunci rahasia untuk variabel Apache Airflow `test-variable` () di halaman ini menggunakan kode sampel di. [Menggunakan kunci rahasia AWS Secrets Manager untuk variabel Apache Airflow](samples-secrets-manager-var.md)

## Sumber Daya
<a name="connections-sm-blogs"></a>
+ Untuk informasi selengkapnya tentang mengonfigurasi rahasia Secrets Manager menggunakan konsol dan AWS CLI, lihat [Buat rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) 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](https://aws.amazon.com/blogs/opensource/move-apache-airflow-connections-variables-aws-secrets-manager/). AWS Secrets Manager

## Apa selanjutnya?
<a name="connections-sm-next-up"></a>
+ Pelajari cara membuat token untuk mengakses Apache Airflow UI di. [Mengakses Apache Airflow](access-airflow-ui.md)