

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

# Rotasi dengan fungsi Lambda
<a name="rotate-secrets_lambda"></a>

Untuk banyak jenis rahasia, Secrets Manager menggunakan AWS Lambda fungsi untuk memperbarui rahasia dan database atau layanan. Untuk informasi tentang biaya penggunaan fungsi Lambda, lihat. [Harga](intro.md#asm_pricing)

Untuk beberapa[Rahasia yang dikelola oleh layanan lain](service-linked-secrets.md), Anda menggunakan *rotasi terkelola*. Untuk menggunakan[Rotasi terkelola](rotate-secrets_managed.md), Anda pertama kali membuat rahasia melalui layanan pengelolaan.

Selama rotasi, Secrets Manager mencatat peristiwa yang menunjukkan keadaan rotasi. Untuk informasi selengkapnya, lihat [Log AWS Secrets Manager peristiwa dengan AWS CloudTrail](monitoring-cloudtrail.md).

Untuk memutar rahasia, Secrets Manager memanggil [fungsi Lambda](rotate-secrets_lambda-functions.md) sesuai dengan jadwal rotasi yang Anda atur. Jika Anda juga memperbarui nilai rahasia Anda secara manual saat rotasi otomatis diatur, maka Secrets Manager menganggap bahwa rotasi yang valid ketika menghitung tanggal rotasi berikutnya. 

Selama rotasi, Secrets Manager memanggil fungsi yang sama beberapa kali, setiap kali dengan parameter yang berbeda. Secrets Manager memanggil fungsi dengan struktur permintaan parameter JSON berikut: 

```
{
    "Step" : "request.type",
    "SecretId" : "string",
    "ClientRequestToken" : "string",
    "RotationToken" : "string"
}
```

**Parameter:**
+ **Langkah — Langkah** rotasi:`create_secret`,`set_secret`,`test_secret`, atau`finish_secret`. Untuk informasi selengkapnya, lihat [Empat langkah dalam fungsi rotasi](rotate-secrets_lambda-functions.md#rotate-secrets_lambda-functions-code).
+ **SecretId**— ARN rahasia untuk memutar.
+ **ClientRequestToken**— Pengidentifikasi unik untuk versi baru rahasia. Nilai ini membantu memastikan idempotensi. Untuk informasi selengkapnya, lihat [PutSecretValue: ClientRequestToken](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html#SecretsManager-PutSecretValue-request-ClientRequestToken) di *Referensi AWS Secrets Manager API*.
+ **RotationToken**— Pengidentifikasi unik yang menunjukkan sumber permintaan. Diperlukan untuk rotasi rahasia menggunakan peran yang diasumsikan atau rotasi lintas akun, di mana Anda memutar rahasia di satu akun dengan menggunakan fungsi rotasi Lambda di akun lain. Dalam kedua kasus, fungsi rotasi mengasumsikan peran IAM untuk memanggil Secrets Manager dan kemudian Secrets Manager menggunakan token rotasi untuk memvalidasi identitas peran IAM. 

Jika ada langkah rotasi yang gagal, Secrets Manager mencoba ulang seluruh proses rotasi beberapa kali.

**Topics**
+ [Rotasi otomatis untuk rahasia database (konsol)](rotate-secrets_turn-on-for-db.md)
+ [Rotasi otomatis untuk rahasia non-database (konsol)](rotate-secrets_turn-on-for-other.md)
+ [Rotasi otomatis (AWS CLI)](rotate-secrets_turn-on-cli.md)
+ [Strategi rotasi fungsi Lambda](rotation-strategy.md)
+ [Fungsi rotasi Lambda](rotate-secrets_lambda-functions.md)
+ [Templat fungsi rotasi](reference_available-rotation-templates.md)
+ [Izin untuk rotasi](rotating-secrets-required-permissions-function.md)
+ [Akses jaringan untuk fungsi AWS Lambda rotasi](rotation-function-network-access.md)
+ [Memecahkan masalah rotasi](troubleshoot_rotation.md)

# Siapkan rotasi otomatis untuk rahasia Amazon RDS, Amazon Aurora, Amazon Redshift, atau Amazon DocumentDB
<a name="rotate-secrets_turn-on-for-db"></a>

Tutorial ini menjelaskan cara mengatur [Rotasi dengan fungsi Lambda](rotate-secrets_lambda.md) rahasia database. Rotasi adalah proses memperbarui rahasia secara berkala. Ketika Anda memutar rahasia, Anda memperbarui kredensil di kedua rahasia dan database. Di Secrets Manager, Anda dapat mengatur rotasi otomatis untuk rahasia database Anda.

Untuk mengatur rotasi menggunakan konsol, Anda harus terlebih dahulu memilih strategi rotasi. Kemudian Anda mengonfigurasi rahasia rotasi, yang menciptakan fungsi rotasi Lambda jika Anda belum memilikinya. Konsol juga menetapkan izin untuk peran eksekusi fungsi Lambda. Langkah terakhir adalah memastikan bahwa fungsi rotasi Lambda dapat mengakses Secrets Manager dan database Anda melalui jaringan.

**Awas**  
Untuk mengaktifkan rotasi otomatis, Anda harus memiliki izin untuk membuat peran eksekusi IAM untuk fungsi rotasi Lambda dan melampirkan kebijakan izin padanya. Anda membutuhkan keduanya `iam:CreateRole` dan `iam:AttachRolePolicy` izin. Pemberian izin ini memungkinkan identitas untuk memberikan izin apa pun kepada diri mereka sendiri.

**Topics**
+ [Langkah 1: Pilih strategi rotasi dan (opsional) buat rahasia superuser](#rotate-secrets_turn-on-for-db_step1)
+ [Langkah 2: Konfigurasikan rotasi dan buat fungsi rotasi](#rotate-secrets_turn-on-for-db_step2)
+ [Langkah 3: (Opsional) Tetapkan kondisi izin tambahan pada fungsi rotasi](#rotate-secrets_turn-on-for-db_step3)
+ [Langkah 4: Siapkan akses jaringan untuk fungsi rotasi](#rotate-secrets_turn-on-for-db_step4)
+ [Langkah selanjutnya](#rotate-secrets_turn-on-for-db_stepnext)

## Langkah 1: Pilih strategi rotasi dan (opsional) buat rahasia superuser
<a name="rotate-secrets_turn-on-for-db_step1"></a>

Untuk informasi tentang strategi yang ditawarkan oleh Secrets Manager, lihat[Strategi rotasi fungsi Lambda](rotation-strategy.md).

Jika Anda memilih *strategi pengguna bergantian*, Anda harus [Buat rahasia](create_secret.md) dan menyimpan kredenal superuser database di dalamnya. Anda memerlukan rahasia dengan kredensil superuser karena rotasi mengkloning pengguna pertama, dan sebagian besar pengguna tidak memiliki izin itu. Perhatikan bahwa Amazon RDS Proxy tidak mendukung strategi pengguna bergantian.

## Langkah 2: Konfigurasikan rotasi dan buat fungsi rotasi
<a name="rotate-secrets_turn-on-for-db_step2"></a>

**Untuk mengaktifkan rotasi untuk rahasia Amazon RDS, Amazon DocumentDB, atau Amazon Redshift**

1. Buka konsol Secrets Manager di [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Pada halaman **Rahasia**, pilih rahasia Anda.

1. Pada halaman **Detail rahasia**, di bagian **konfigurasi Rotasi**, pilih **Edit rotasi**.

1. Dalam kotak dialog **Edit konfigurasi rotasi**, lakukan hal berikut:

   1. Nyalakan **rotasi otomatis**.

   1. Di bawah **Jadwal rotasi**, masukkan jadwal Anda di zona waktu UTC baik di **pembuat ekspresi Jadwal** atau sebagai **ekspresi Jadwal**. Secrets Manager menyimpan jadwal Anda sebagai `cron()` ekspresi `rate()` atau. Jendela rotasi secara otomatis dimulai pada tengah malam kecuali Anda menentukan **waktu Mulai**. Anda dapat memutar rahasia sesering setiap empat jam. Untuk informasi selengkapnya, lihat [Jadwal rotasi](rotate-secrets_schedule.md).

   1. (Opsional) Untuk **durasi Jendela**, pilih panjang jendela di mana Anda ingin Secrets Manager memutar rahasia Anda, **3h** misalnya untuk jendela tiga jam. Jendela tidak boleh meluas ke jendela rotasi berikutnya. Jika Anda tidak menentukan **Durasi jendela**, untuk jadwal rotasi dalam jam, jendela akan ditutup secara otomatis setelah satu jam. Untuk jadwal rotasi dalam beberapa hari, jendela secara otomatis ditutup pada akhir hari. 

   1. (Opsional) Pilih **Putar segera ketika rahasia disimpan** untuk memutar rahasia Anda ketika Anda menyimpan perubahan Anda. Jika Anda menghapus kotak centang, maka rotasi pertama akan dimulai pada jadwal yang Anda tetapkan.

      Jika rotasi gagal, misalnya karena Langkah 3 dan 4 belum selesai, Secrets Manager mencoba ulang proses rotasi beberapa kali.

   1. Di bawah **fungsi Rotasi**, lakukan salah satu hal berikut:
      + Pilih **Buat fungsi Lambda baru dan masukkan nama untuk fungsi** baru Anda. Secrets Manager menambahkan `SecretsManager` ke awal nama fungsi. Secrets Manager membuat fungsi berdasarkan [template](reference_available-rotation-templates.md) yang sesuai dan menetapkan [izin yang diperlukan untuk peran](rotating-secrets-required-permissions-function.md) eksekusi Lambda.
      + Pilih **Gunakan fungsi Lambda yang ada untuk menggunakan kembali fungsi** rotasi yang Anda gunakan untuk rahasia lain. Fungsi rotasi yang tercantum di bawah **Konfigurasi VPC yang direkomendasikan** memiliki VPC dan grup keamanan yang sama dengan database, yang membantu fungsi mengakses database.

   1. Untuk **strategi Rotasi**, pilih strategi **Single user** atau **Alternating users**. Untuk informasi selengkapnya, lihat [Langkah 1: Pilih strategi rotasi dan (opsional) buat rahasia superuser](#rotate-secrets_turn-on-for-db_step1).

1. Pilih **Simpan**.

## Langkah 3: (Opsional) Tetapkan kondisi izin tambahan pada fungsi rotasi
<a name="rotate-secrets_turn-on-for-db_step3"></a>

Dalam kebijakan sumber daya untuk fungsi rotasi Anda, sebaiknya sertakan kunci konteks [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)untuk membantu mencegah Lambda digunakan sebagai wakil yang [bingung](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Untuk beberapa AWS layanan, untuk menghindari skenario wakil yang membingungkan, AWS merekomendasikan agar Anda menggunakan kunci kondisi [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)dan global. Namun, jika Anda menyertakan kondisi `aws:SourceArn` dalam kebijakan fungsi rotasi Anda, fungsi rotasi hanya dapat digunakan untuk merotasi rahasia yang ditentukan oleh ARN tersebut. Sebaiknya hanya sertakan kunci konteks `aws:SourceAccount` agar Anda dapat menggunakan fungsi rotasi untuk beberapa rahasia. 

**Untuk memperbarui kebijakan sumber daya fungsi rotasi**

1. Di konsol Secrets Manager, pilih rahasia Anda, dan kemudian pada halaman detail, di bawah **konfigurasi Rotasi**, pilih fungsi rotasi Lambda. Konsol Lambda terbuka.

1. Ikuti petunjuk di [Menggunakan kebijakan berbasis sumber daya untuk Lambda untuk menambahkan kondisi](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html). `aws:sourceAccount`

   ```
   "Condition": {
       "StringEquals": {
           "AWS:SourceAccount": "123456789012"
       }
   },
   ```

Jika rahasia dienkripsi dengan kunci KMS selain, Secrets Kunci yang dikelola AWS `aws/secretsmanager` Manager memberikan izin peran eksekusi Lambda untuk menggunakan kunci tersebut. Anda dapat menggunakan konteks [enkripsi secretArn](security-encryption.md#security-encryption-encryption-context) untuk membatasi penggunaan fungsi dekripsi, sehingga peran fungsi rotasi hanya memiliki akses untuk mendekripsi rahasia yang bertanggung jawab untuk berputar.

**Untuk memperbarui peran eksekusi fungsi rotasi**

1. Dari fungsi rotasi Lambda, pilih **Konfigurasi**, lalu di bawah **Peran eksekusi**, pilih nama **Peran**. 

1. Ikuti petunjuk di [Memodifikasi kebijakan izin peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy) untuk menambahkan kondisi. `kms:EncryptionContext:SecretARN`

   ```
   "Condition": {
       "StringEquals": {
           "kms:EncryptionContext:SecretARN": "SecretARN"
       }
   },
   ```

## Langkah 4: Siapkan akses jaringan untuk fungsi rotasi
<a name="rotate-secrets_turn-on-for-db_step4"></a>

Untuk informasi selengkapnya, lihat [Akses jaringan untuk fungsi AWS Lambda rotasi](rotation-function-network-access.md).

## Langkah selanjutnya
<a name="rotate-secrets_turn-on-for-db_stepnext"></a>

Lihat [Memecahkan masalah rotasi AWS Secrets Manager](troubleshoot_rotation.md).

# Mengatur rotasi otomatis untuk rahasia non-database AWS Secrets Manager
<a name="rotate-secrets_turn-on-for-other"></a>

Tutorial ini menjelaskan cara mengatur [Rotasi dengan fungsi Lambda](rotate-secrets_lambda.md) rahasia non-database. Rotasi adalah proses memperbarui rahasia secara berkala. Ketika Anda memutar rahasia, Anda memperbarui kredensi di kedua rahasia dan database atau layanan yang menjadi rahasia itu.

Untuk rahasia database, lihat[Rotasi otomatis untuk rahasia database (konsol)](rotate-secrets_turn-on-for-db.md).

**Awas**  
Untuk mengaktifkan rotasi otomatis, Anda harus memiliki izin untuk membuat peran eksekusi IAM untuk fungsi rotasi Lambda dan melampirkan kebijakan izin padanya. Anda membutuhkan keduanya `iam:CreateRole` dan `iam:AttachRolePolicy` izin. Pemberian izin ini memungkinkan identitas untuk memberikan izin apa pun kepada diri mereka sendiri.

**Topics**
+ [Langkah 1: Buat fungsi rotasi generik](#rotate-secrets_turn-on-for-other_create)
+ [Langkah 2: Tulis kode fungsi rotasi](#rotate-secrets_turn-on-for-other_write)
+ [Langkah 3: Konfigurasikan rahasia untuk rotasi](#rotate-secrets_turn-on-for-other_configure)
+ [Langkah 4: Izinkan fungsi rotasi untuk mengakses Secrets Manager dan database atau layanan Anda](#rotate-secrets_turn-on-for-other_perms)
+ [Langkah 5: Izinkan Secrets Manager untuk menjalankan fungsi rotasi](#rotate-secrets_turn-on-for-other_perms2)
+ [Langkah 6: Siapkan akses jaringan untuk fungsi rotasi](#rotate-secrets_turn-on-for-other_network)
+ [Langkah selanjutnya](#rotate-secrets_turn-on-for-other_stepnext)

## Langkah 1: Buat fungsi rotasi generik
<a name="rotate-secrets_turn-on-for-other_create"></a>

Untuk memulai, buat fungsi rotasi Lambda. Ini tidak akan memiliki kode di dalamnya untuk memutar rahasia Anda, jadi Anda akan menulisnya di langkah selanjutnya. Untuk informasi tentang cara kerja fungsi rotasi, lihat[Fungsi rotasi Lambda](rotate-secrets_lambda-functions.md).

Di Wilayah yang didukung, Anda dapat menggunakan AWS Serverless Application Repository untuk membuat fungsi dari template. Untuk mengetahui daftar Wilayah yang didukung, lihat [AWS Serverless Application Repository FAQs](https://aws.amazon.com/serverless/serverlessrepo/faqs/). Di Wilayah lain, Anda membuat fungsi dari awal dan menyalin kode template ke dalam fungsi.

**Untuk membuat fungsi rotasi generik**

1. Untuk menentukan AWS Serverless Application Repository apakah didukung di Wilayah Anda, lihat [AWS Serverless Application Repository titik akhir dan kuota](https://docs.aws.amazon.com/general/latest/gr/serverlessrepo.html) di Referensi *AWS Umum*. 

1. Lakukan salah satu tindakan berikut:
   + Jika AWS Serverless Application Repository didukung di Wilayah Anda:

     1. Di konsol Lambda, pilih **Aplikasi** dan kemudian pilih **Buat** aplikasi.

     1. Pada halaman **Buat aplikasi**, pilih tab **Aplikasi Tanpa Server**.

     1. Di kotak pencarian di bawah **Aplikasi publik**, masukkan**SecretsManagerRotationTemplate**.

     1. Pilih **Tampilkan aplikasi yang membuat peran IAM kustom atau kebijakan sumber daya**.

     1. Pilih **SecretsManagerRotationTemplate**ubin.

     1. Pada halaman **Tinjau, konfigurasikan, dan terapkan**, di ubin **Pengaturan aplikasi**, isi bidang yang diperlukan. 
        + Untuk **titik akhir**, masukkan titik akhir untuk Wilayah Anda, termasuk. **https://** Untuk daftar titik akhir, lihat[AWS Secrets Manager titik akhir](asm_access.md#endpoints).
        + **Untuk menempatkan fungsi Lambda dalam VPC, sertakan Id dan. vpcSecurityGroup **vpcSubnetIds****

     1. Pilih **Deploy**.
   + Jika AWS Serverless Application Repository tidak didukung di Wilayah Anda:

     1. Di konsol Lambda, pilih **Functions dan kemudian pilih **Create** function**.

     1. Di halaman **Buat fungsi**, lakukan langkah berikut:

        1. Pilih **Tulis dari awal**.

        1. Untuk **nama Fungsi**, masukkan nama untuk fungsi rotasi Anda.

        1. Untuk **Runtime**, pilih **Python 3.10**.

        1. Pilih **Buat fungsi**.

## Langkah 2: Tulis kode fungsi rotasi
<a name="rotate-secrets_turn-on-for-other_write"></a>

Pada langkah ini, Anda menulis kode yang memperbarui rahasia dan layanan atau database yang menjadi rahasia itu. Untuk informasi tentang fungsi rotasi, termasuk tips menulis fungsi rotasi Anda sendiri, lihat[Fungsi rotasi Lambda](rotate-secrets_lambda-functions.md). Anda juga dapat menggunakan [Templat fungsi rotasi](reference_available-rotation-templates.md) sebagai referensi.

## Langkah 3: Konfigurasikan rahasia untuk rotasi
<a name="rotate-secrets_turn-on-for-other_configure"></a>

Pada langkah ini, Anda mengatur jadwal rotasi untuk rahasia Anda dan menghubungkan fungsi rotasi ke rahasia. 

**Untuk mengkonfigurasi rotasi dan membuat fungsi rotasi kosong**

1. Buka konsol Secrets Manager di [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Pada halaman **Rahasia**, pilih rahasia Anda.

1. Pada halaman **Detail rahasia**, di bagian **konfigurasi Rotasi**, pilih **Edit rotasi**. Dalam kotak dialog **Edit konfigurasi rotasi**, lakukan hal berikut:

   1. Nyalakan **Rotasi otomatis**.

   1. Di bawah **Jadwal rotasi**, masukkan jadwal Anda di zona waktu UTC baik di **pembuat ekspresi Jadwal** atau sebagai **ekspresi Jadwal**. Secrets Manager menyimpan jadwal Anda sebagai `cron()` ekspresi `rate()` atau. Jendela rotasi secara otomatis dimulai pada tengah malam kecuali Anda menentukan **waktu Mulai**. Anda dapat merotasi rahasia setiap empat jam. Untuk informasi selengkapnya, lihat [Jadwal rotasi](rotate-secrets_schedule.md).

   1. (Opsional) Untuk **durasi Jendela**, pilih panjang jendela di mana Anda ingin Secrets Manager memutar rahasia Anda, **3h** misalnya untuk jendela tiga jam. Jendela tidak boleh meluas ke jendela rotasi berikutnya. Jika Anda tidak menentukan **Durasi jendela**, untuk jadwal rotasi dalam jam, jendela akan ditutup secara otomatis setelah satu jam. Untuk jadwal rotasi dalam beberapa hari, jendela secara otomatis ditutup pada akhir hari. 

   1. (Opsional) Pilih **Putar segera ketika rahasia disimpan** untuk memutar rahasia Anda ketika Anda menyimpan perubahan Anda. Jika Anda menghapus kotak centang, maka rotasi pertama akan dimulai pada jadwal yang Anda tetapkan.

   1. Di bawah **fungsi Rotasi**, pilih fungsi Lambda yang Anda buat di Langkah 1.

   1. Pilih **Simpan**.

## Langkah 4: Izinkan fungsi rotasi untuk mengakses Secrets Manager dan database atau layanan Anda
<a name="rotate-secrets_turn-on-for-other_perms"></a>

Fungsi rotasi Lambda memerlukan izin untuk mengakses rahasia di Secrets Manager, dan memerlukan izin untuk mengakses database atau layanan Anda. Pada langkah ini, Anda memberikan izin ini ke peran eksekusi Lambda. Jika rahasia dienkripsi dengan kunci KMS selain Kunci yang dikelola AWS `aws/secretsmanager`, maka Anda perlu memberikan izin peran eksekusi Lambda untuk menggunakan kunci tersebut. Anda dapat menggunakan konteks [enkripsi secretArn](security-encryption.md#security-encryption-encryption-context) untuk membatasi penggunaan fungsi dekripsi, sehingga peran fungsi rotasi hanya memiliki akses untuk mendekripsi rahasia yang bertanggung jawab untuk berputar. Untuk contoh kebijakan, lihat[Izin untuk rotasi](rotating-secrets-required-permissions-function.md).

Untuk petunjuknya, lihat [Peran eksekusi Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) di Panduan *AWS Lambda Pengembang*.

## Langkah 5: Izinkan Secrets Manager untuk menjalankan fungsi rotasi
<a name="rotate-secrets_turn-on-for-other_perms2"></a>

Untuk mengizinkan Secrets Manager menjalankan fungsi rotasi pada jadwal rotasi yang Anda atur, Anda harus memberikan `lambda:InvokeFunction` izin kepada kepala layanan Secrets Manager dalam kebijakan sumber daya fungsi Lambda.

Dalam kebijakan sumber daya untuk fungsi rotasi Anda, sebaiknya sertakan kunci konteks [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)untuk membantu mencegah Lambda digunakan sebagai wakil yang [bingung](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Untuk beberapa AWS layanan, untuk menghindari skenario wakil yang membingungkan, AWS merekomendasikan agar Anda menggunakan kunci kondisi [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)dan global. Namun, jika Anda menyertakan kondisi `aws:SourceArn` dalam kebijakan fungsi rotasi Anda, fungsi rotasi hanya dapat digunakan untuk merotasi rahasia yang ditentukan oleh ARN tersebut. Sebaiknya hanya sertakan kunci konteks `aws:SourceAccount` agar Anda dapat menggunakan fungsi rotasi untuk beberapa rahasia. 

Untuk melampirkan kebijakan sumber daya ke fungsi Lambda, lihat [Menggunakan kebijakan berbasis sumber daya untuk Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html).

Kebijakan berikut memungkinkan Secrets Manager untuk menjalankan fungsi Lambda.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "default",
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "Service": "secretsmanager.amazonaws.com"
            },
        "Action": "lambda:InvokeFunction",
        "Condition": {
            "StringEquals": {
                "AWS:SourceAccount": "123456789012"
            }
        },
        "Resource": "arn:aws:lambda:us-east-1:123456789012:function:function-name"
    }
    ]
}
```

------

## Langkah 6: Siapkan akses jaringan untuk fungsi rotasi
<a name="rotate-secrets_turn-on-for-other_network"></a>

Pada langkah ini, Anda mengizinkan fungsi rotasi untuk terhubung ke Secrets Manager dan layanan atau database rahasianya. Fungsi rotasi harus memiliki akses ke keduanya untuk dapat memutar rahasia. Lihat [Akses jaringan untuk fungsi AWS Lambda rotasi](rotation-function-network-access.md).

## Langkah selanjutnya
<a name="rotate-secrets_turn-on-for-other_stepnext"></a>

Saat Anda mengonfigurasi rotasi di Langkah 3, Anda mengatur jadwal untuk memutar rahasia. Jika rotasi gagal saat dijadwalkan, Secrets Manager akan mencoba rotasi beberapa kali. Anda juga dapat memulai rotasi segera dengan mengikuti instruksi di[Putar rahasia segera](rotate-secrets_now.md).

Jika rotasi gagal, lihat[Memecahkan masalah rotasi](troubleshoot_rotation.md).

# Mengatur rotasi otomatis menggunakan AWS CLI
<a name="rotate-secrets_turn-on-cli"></a>

Tutorial ini menjelaskan cara mengatur [Rotasi dengan fungsi Lambda](rotate-secrets_lambda.md) dengan menggunakan AWS CLI. Ketika Anda memutar rahasia, Anda memperbarui kredensi di kedua rahasia dan database atau layanan yang menjadi rahasia itu. 

Anda juga dapat mengatur rotasi menggunakan konsol. Untuk rahasia database, lihat[Rotasi otomatis untuk rahasia database (konsol)](rotate-secrets_turn-on-for-db.md). Untuk semua jenis rahasia lainnya, lihat[Rotasi otomatis untuk rahasia non-database (konsol)](rotate-secrets_turn-on-for-other.md).

Untuk mengatur rotasi menggunakan AWS CLI, jika Anda memutar rahasia database, Anda harus terlebih dahulu memilih strategi rotasi. Jika Anda memilih strategi pengguna bergantian, Anda harus menyimpan rahasia terpisah dengan kredensi untuk superuser database. Selanjutnya, Anda menulis kode fungsi rotasi. Secrets Manager menyediakan template tempat Anda dapat mendasarkan fungsi Anda. Kemudian Anda membuat fungsi Lambda dengan kode Anda dan mengatur izin untuk fungsi Lambda dan peran eksekusi Lambda. Langkah selanjutnya adalah memastikan bahwa fungsi Lambda dapat mengakses Secrets Manager dan database atau layanan Anda melalui jaringan. Akhirnya, Anda mengkonfigurasi rahasia untuk rotasi.

**Topics**
+ [Prasyarat untuk rahasia database: Pilih strategi rotasi](#rotate-secrets_turn-on-cli_step1)
+ [Langkah 1: Tulis kode fungsi rotasi](#rotate-secrets_turn-on-cli_write)
+ [Langkah 2: Buat fungsi Lambda](#w2aac21c11c25c15)
+ [Langkah 3: Siapkan akses jaringan](#w2aac21c11c25c17)
+ [Langkah 4: Konfigurasikan rahasia untuk rotasi](#w2aac21c11c25c19)
+ [Langkah selanjutnya](#w2aac21c11c25c21)

## Prasyarat untuk rahasia database: Pilih strategi rotasi
<a name="rotate-secrets_turn-on-cli_step1"></a>

Untuk informasi tentang strategi yang ditawarkan oleh Secrets Manager, lihat[Strategi rotasi fungsi Lambda](rotation-strategy.md).

### Opsi 1: Strategi pengguna tunggal
<a name="w2aac21c11c25c11b5"></a>

Jika Anda memilih *strategi pengguna tunggal*, Anda dapat melanjutkan dengan Langkah 1. 

### Opsi 2: Strategi pengguna bergantian
<a name="w2aac21c11c25c11b7"></a>

Jika Anda memilih *strategi pengguna bergantian*, Anda harus:
+ [Buat rahasia](create_secret.md#create_secret_cli) dan simpan kredenal superuser database di dalamnya. Anda memerlukan rahasia dengan kredenal superuser karena rotasi pengguna bergantian mengkloning pengguna pertama, dan sebagian besar pengguna tidak memiliki izin itu. 
+ Tambahkan ARN rahasia superuser ke rahasia aslinya. Untuk informasi selengkapnya, lihat [Struktur rahasia JSON AWS Secrets Manager](reference_secret_json_structure.md). 

Perhatikan bahwa Amazon RDS Proxy tidak mendukung strategi pengguna bergantian.

## Langkah 1: Tulis kode fungsi rotasi
<a name="rotate-secrets_turn-on-cli_write"></a>

Untuk memutar rahasia, Anda memerlukan fungsi rotasi. Fungsi rotasi adalah fungsi Lambda yang dipanggil Secrets Manager untuk memutar rahasia Anda. Untuk informasi selengkapnya, lihat [Rotasi dengan fungsi Lambda](rotate-secrets_lambda.md). Pada langkah ini, Anda menulis kode yang memperbarui rahasia dan layanan atau database yang menjadi rahasia itu.

Secrets Manager menyediakan template untuk Amazon RDS, Amazon Aurora, Amazon Redshift, dan rahasia database Amazon DocumentDB di. [Templat fungsi rotasi](reference_available-rotation-templates.md) 

**Untuk menulis kode fungsi rotasi**

1. Lakukan salah satu tindakan berikut:
   + Periksa daftar [templat fungsi rotasi](reference_available-rotation-templates.md). Jika ada yang cocok dengan layanan dan strategi rotasi Anda, salin kodenya. 
   + Untuk jenis rahasia lainnya, Anda menulis fungsi rotasi Anda sendiri. Untuk petunjuk, lihat [Fungsi rotasi Lambda](rotate-secrets_lambda-functions.md). 

1. Simpan file dalam file ZIP *my-function.zip* bersama dengan dependensi yang diperlukan.

## Langkah 2: Buat fungsi Lambda
<a name="w2aac21c11c25c15"></a>

Pada langkah ini, Anda membuat fungsi Lambda menggunakan file ZIP yang Anda buat di Langkah 1. Anda juga mengatur [peran eksekusi Lambda, yang merupakan peran](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) yang diasumsikan Lambda saat fungsi dipanggil.

**Untuk membuat fungsi rotasi Lambda dan peran eksekusi**

1. Buat kebijakan kepercayaan untuk peran eksekusi Lambda dan simpan sebagai file JSON. Untuk contoh dan informasi lebih lanjut, lihat[Izin peran eksekusi fungsi rotasi Lambda untuk AWS Secrets Manager](rotating-secrets-required-permissions-function.md). Kebijakan harus:
   + Izinkan peran untuk memanggil operasi Secrets Manager pada rahasia. 
   + Izinkan peran untuk memanggil layanan yang rahasianya, misalnya, untuk membuat kata sandi baru. 

1. Buat peran eksekusi Lambda dan terapkan kebijakan kepercayaan yang Anda buat di langkah sebelumnya dengan menelepon. [https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)

   ```
   aws iam create-role \
       --role-name rotation-lambda-role \
       --assume-role-policy-document file://trust-policy.json
   ```

1. Buat fungsi Lambda dari file ZIP dengan menelepon. [https://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html](https://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html)

   ```
   aws lambda create-function \
     --function-name my-rotation-function \
     --runtime python3.7 \
     --zip-file fileb://my-function.zip \
     --handler .handler \
     --role arn:aws:iam::123456789012:role/service-role/rotation-lambda-role
   ```

1. Tetapkan kebijakan sumber daya pada fungsi Lambda untuk mengizinkan Secrets Manager memanggilnya dengan menelepon. [https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html)

   ```
   aws lambda add-permission \
     --function-name my-rotation-function \
     --action lambda:InvokeFunction \
     --statement-id SecretsManager \
     --principal secretsmanager.amazonaws.com \
     --source-account 123456789012
   ```

## Langkah 3: Siapkan akses jaringan
<a name="w2aac21c11c25c17"></a>

Untuk informasi selengkapnya, lihat [Akses jaringan untuk fungsi AWS Lambda rotasi](rotation-function-network-access.md).

## Langkah 4: Konfigurasikan rahasia untuk rotasi
<a name="w2aac21c11c25c19"></a>

Untuk mengaktifkan rotasi otomatis untuk rahasia Anda, hubungi [https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/rotate-secret.html](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/rotate-secret.html). Anda dapat mengatur jadwal rotasi dengan ekspresi `cron()` atau `rate()` jadwal, dan Anda dapat mengatur durasi jendela rotasi. Untuk informasi selengkapnya, lihat [Jadwal rotasi](rotate-secrets_schedule.md).

```
aws secretsmanager rotate-secret \
    --secret-id MySecret \
    --rotation-lambda-arn arn:aws:lambda:Region:123456789012:function:my-rotation-function \
    --rotation-rules "{\"ScheduleExpression\": \"cron(0 16 1,15 * ? *)\", \"Duration\": \"2h\"}"
```

## Langkah selanjutnya
<a name="w2aac21c11c25c21"></a>

Lihat [Memecahkan masalah rotasi AWS Secrets Manager](troubleshoot_rotation.md).

# Strategi rotasi fungsi Lambda
<a name="rotation-strategy"></a>

Untuk[Rotasi dengan fungsi Lambda](rotate-secrets_lambda.md), untuk rahasia database, Secrets Manager menawarkan dua strategi rotasi.

## Strategi rotasi: pengguna tunggal
<a name="rotating-secrets-one-user-one-password"></a>

Strategi ini memperbarui kredensi untuk satu pengguna dalam satu rahasia. Untuk instans Amazon RDS Db2, karena pengguna tidak dapat mengubah kata sandi mereka sendiri, Anda harus memberikan kredensi admin dalam rahasia terpisah. **Ini adalah strategi rotasi paling sederhana, dan cocok untuk sebagian besar kasus penggunaan.** Secara khusus, kami menyarankan Anda menggunakan strategi ini untuk kredensi untuk satu kali (ad hoc) atau pengguna interaktif.

Ketika rahasia berputar, koneksi database terbuka tidak terputus. Sementara rotasi sedang terjadi, ada periode waktu singkat antara ketika kata sandi dalam database berubah dan ketika rahasia diperbarui. Selama waktu ini, ada risiko rendah database menolak panggilan yang menggunakan kredenal yang diputar. Anda dapat mengurangi risiko ini dengan strategi coba [lagi yang tepat](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/). Setelah rotasi, koneksi baru menggunakan kredensi baru. 

## Strategi rotasi: pengguna bergantian
<a name="rotating-secrets-two-users"></a>

Strategi ini memperbarui kredensi untuk dua pengguna dalam satu rahasia. Anda membuat pengguna pertama, dan selama rotasi pertama, fungsi rotasi mengkloningnya untuk membuat pengguna kedua. Setiap kali rahasia berputar, fungsi rotasi mengganti kata sandi pengguna mana yang diperbarui. Karena sebagian besar pengguna tidak memiliki izin untuk mengkloning diri mereka sendiri, Anda harus memberikan kredensialnya untuk rahasia lain. `superuser` Sebaiknya gunakan strategi rotasi pengguna tunggal ketika pengguna kloning di database Anda tidak memiliki izin yang sama dengan pengguna asli, dan untuk kredensi untuk pengguna satu kali (ad hoc) atau interaktif.

Strategi ini sesuai untuk database dengan model izin di mana satu peran memiliki tabel database dan peran kedua memiliki izin untuk mengakses tabel database. Ini juga sesuai untuk aplikasi yang membutuhkan ketersediaan tinggi. Jika aplikasi mengambil rahasia selama rotasi, aplikasi masih mendapatkan set kredensi yang valid. Setelah rotasi, keduanya `user` dan `user_clone` kredensialnya valid. Bahkan ada lebih sedikit kemungkinan aplikasi mendapatkan penolakan selama jenis rotasi ini daripada rotasi pengguna tunggal. Jika database di-host di server farm di mana perubahan kata sandi membutuhkan waktu untuk menyebar ke semua server, ada risiko database menolak panggilan yang menggunakan kredensi baru. Anda dapat mengurangi risiko ini dengan strategi coba [lagi yang tepat](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/).

Secrets Manager membuat pengguna kloning dengan izin yang sama dengan pengguna asli. Jika Anda mengubah izin pengguna asli setelah klon dibuat, Anda juga harus mengubah izin pengguna kloning.

Misalnya, jika Anda membuat rahasia dengan kredensi pengguna database, rahasia berisi satu versi dengan kredensialnya.

 ![\[The secret contains one secret version labeled AWSCURRENT. The username for the AWSCURRENT version is MyUser.\]](http://docs.aws.amazon.com/id_id/secretsmanager/latest/userguide/images/AlternatingUsers1.png) 

**Rotasi pertama** — Fungsi rotasi membuat tiruan pengguna Anda dengan kata sandi yang dihasilkan, dan kredenal tersebut menjadi versi rahasia saat ini.

 ![\[The secret contains two secret versions, one labeled AWSCURRENT and one labeled AWSPREVIOUS. The username for the AWSCURRENT version is MyUser_clone.\]](http://docs.aws.amazon.com/id_id/secretsmanager/latest/userguide/images/AlternatingUsers2.png) 

**Rotasi kedua** — Fungsi rotasi memperbarui kata sandi untuk pengguna asli.

 ![\[The secret contains two secret versions, one labeled AWSCURRENT and one labeled AWSPREVIOUS. The username for the AWSCURRENT version is MyUser.\]](http://docs.aws.amazon.com/id_id/secretsmanager/latest/userguide/images/AlternatingUsers3.png) 

**Rotasi ketiga** - Fungsi rotasi memperbarui kata sandi untuk pengguna kloning.

 ![\[The secret contains two secret versions, one labeled AWSCURRENT and one labeled AWSPREVIOUS. The username for the AWSCURRENT version is MyUser_clone.\]](http://docs.aws.amazon.com/id_id/secretsmanager/latest/userguide/images/AlternatingUsers4.png) 

# Fungsi rotasi Lambda
<a name="rotate-secrets_lambda-functions"></a>

Dalam[Rotasi dengan fungsi Lambda](rotate-secrets_lambda.md), AWS Lambda fungsi memutar rahasia. AWS Secrets Manager menggunakan [label pementasan](whats-in-a-secret.md) untuk mengidentifikasi versi rahasia selama rotasi.

Jika AWS Secrets Manager tidak menyediakan [template fungsi rotasi](reference_available-rotation-templates.md) untuk tipe rahasia Anda, Anda dapat membuat fungsi rotasi kustom. Ikuti panduan ini saat menulis fungsi rotasi Anda:

**Praktik terbaik untuk fungsi rotasi kustom**
+ Gunakan [template rotasi generik](reference_available-rotation-templates.md#OTHER_rotation_templates) sebagai titik awal.
+ Berhati-hatilah dengan debugging atau logging statement. Mereka dapat menulis informasi ke Amazon CloudWatch Logs. Pastikan log tidak berisi informasi sensitif.

  Untuk contoh pernyataan log, lihat kode [AWS Secrets Manager templat fungsi rotasi](reference_available-rotation-templates.md) sumber.
+ Untuk keamanan, AWS Secrets Manager hanya memungkinkan fungsi rotasi Lambda untuk memutar rahasia secara langsung. Fungsi rotasi tidak dapat memanggil fungsi Lambda lain untuk memutar rahasia.
+ Untuk panduan debugging, lihat [Menguji dan men-debug aplikasi tanpa server](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-test-and-debug.html).
+ Jika Anda menggunakan binari dan pustaka eksternal, misalnya untuk terhubung ke sumber daya, Anda bertanggung jawab untuk menambal dan memperbaruinya.
+ Package fungsi rotasi Anda dan dependensi apa pun dalam file ZIP, seperti. *my-function.zip*

**Awas**  
Menyetel parameter konkurensi yang disediakan ke nilai yang lebih rendah dari 10 dapat menyebabkan pelambatan karena utas eksekusi yang tidak mencukupi untuk fungsi Lambda. Untuk informasi selengkapnya, lihat [Memahami konkurensi cadangan dan konkurensi yang disediakan di Panduan Pengembang](https://docs.aws.amazon.com/lambda/latest/dg/lambda-concurrency.html#reserved-and-provisioned). AWS Lambda AWS Lambda 

## Empat langkah dalam fungsi rotasi
<a name="rotate-secrets_lambda-functions-code"></a>

**Topics**
+ [`createSecret`: Buat versi baru dari rahasia](#w2aac21c11c29c11b5)
+ [**setSecret**: Ubah kredensil dalam database atau layanan](#w2aac21c11c29c11b7)
+ [**testSecret**: Uji versi rahasia baru](#w2aac21c11c29c11b9)
+ [**finishSecret**: Selesaikan rotasi](#w2aac21c11c29c11c11)

### `createSecret`: Buat versi baru dari rahasia
<a name="w2aac21c11c29c11b5"></a>

Metode `createSecret` pertama memeriksa apakah ada rahasia dengan memanggil [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/secretsmanager.html#SecretsManager.Client.get_secret_value](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/secretsmanager.html#SecretsManager.Client.get_secret_value)dengan `ClientRequestToken` passed-in. Jika tidak ada rahasia, itu menciptakan rahasia baru dengan [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/secretsmanager.html#SecretsManager.Client.create_secret](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/secretsmanager.html#SecretsManager.Client.create_secret)dan token sebagai`VersionId`. Kemudian menghasilkan nilai rahasia baru dengan [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/secretsmanager.html#SecretsManager.Client.get_random_password](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/secretsmanager.html#SecretsManager.Client.get_random_password). Selanjutnya panggilan [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/secretsmanager.html#SecretsManager.Client.put_secret_value](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/secretsmanager.html#SecretsManager.Client.put_secret_value)untuk menyimpannya dengan label `AWSPENDING` pementasan. Menyimpan nilai rahasia baru `AWSPENDING` membantu memastikan idempotensi. Jika rotasi gagal karena alasan apa pun, Anda dapat merujuk ke nilai rahasia itu dalam panggilan berikutnya. Lihat [Bagaimana cara membuat fungsi Lambda saya idempoten](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-function-idempotent/).

**Kiat untuk menulis fungsi rotasi Anda sendiri**
+ Pastikan nilai rahasia baru hanya mencakup karakter yang valid untuk database atau layanan. Kecualikan karakter dengan menggunakan `ExcludeCharacters` parameter. 
+ Saat Anda menguji fungsi Anda, gunakan AWS CLI untuk melihat tahapan versi: panggil [https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html)dan lihat`VersionIdsToStages`.
+ Untuk Amazon RDS MySQL, dalam rotasi pengguna bergantian, Secrets Manager membuat pengguna kloning dengan nama tidak lebih dari 16 karakter. Anda dapat memodifikasi fungsi rotasi untuk memungkinkan nama pengguna yang lebih panjang. MySQL versi 5.7 dan yang lebih tinggi mendukung nama pengguna hingga 32 karakter, namun Secrets Manager menambahkan “\$1clone” (enam karakter) ke akhir nama pengguna, jadi Anda harus menjaga nama pengguna maksimal 26 karakter.

### **setSecret**: Ubah kredensil dalam database atau layanan
<a name="w2aac21c11c29c11b7"></a>

Metode ini `setSecret` mengubah kredensi dalam database atau layanan untuk mencocokkan nilai rahasia baru dalam `AWSPENDING` versi rahasia. 

**Kiat untuk menulis fungsi rotasi Anda sendiri**
+ Jika Anda meneruskan pernyataan ke layanan yang menafsirkan pernyataan, seperti database, gunakan parameterisasi kueri. Untuk informasi selengkapnya, lihat [Lembar Cheat Parameterisasi Kueri di situs web](https://cheatsheetseries.owasp.org/cheatsheets/Query_Parameterization_Cheat_Sheet.html) *OWASP*.
+ Fungsi rotasi adalah wakil istimewa yang memiliki otorisasi untuk mengakses dan memodifikasi kredensil pelanggan baik dalam rahasia Secrets Manager dan sumber daya target. Untuk mencegah potensi [serangan wakil yang membingungkan](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), Anda perlu memastikan bahwa penyerang tidak dapat menggunakan fungsi tersebut untuk mengakses sumber daya lain. Sebelum Anda memperbarui kredensialnya:
  + Periksa apakah kredensi dalam `AWSCURRENT` versi rahasia valid. Jika `AWSCURRENT` kredensialnya tidak valid, tinggalkan upaya rotasi.
  + Periksa apakah nilai `AWSCURRENT` dan `AWSPENDING` rahasia adalah untuk sumber daya yang sama. Untuk nama pengguna dan kata sandi, periksa apakah `AWSPENDING` nama pengguna `AWSCURRENT` dan nama pengguna sama. 
  + Periksa apakah sumber daya layanan tujuan sama. Untuk database, periksa apakah nama `AWSCURRENT` dan `AWSPENDING` host sama.
+ Dalam kasus yang jarang terjadi, Anda mungkin ingin menyesuaikan fungsi rotasi yang ada untuk database. Misalnya, dengan rotasi pengguna bergantian, Secrets Manager membuat pengguna kloning dengan menyalin [parameter konfigurasi runtime](https://www.postgresql.org/docs/8.0/runtime-config.html) dari pengguna pertama. Jika Anda ingin menyertakan lebih banyak atribut, atau mengubah mana yang diberikan kepada pengguna kloning, Anda perlu memperbarui kode dalam `set_secret` fungsi. 

### **testSecret**: Uji versi rahasia baru
<a name="w2aac21c11c29c11b9"></a>

Selanjutnya, fungsi rotasi Lambda menguji `AWSPENDING` versi rahasia dengan menggunakannya untuk mengakses database atau layanan. Fungsi rotasi berdasarkan [Templat fungsi rotasi](reference_available-rotation-templates.md) uji rahasia baru dengan menggunakan akses baca. 

### **finishSecret**: Selesaikan rotasi
<a name="w2aac21c11c29c11c11"></a>

Terakhir, fungsi rotasi Lambda memindahkan label `AWSCURRENT` dari versi rahasia sebelumnya ke versi ini, yang juga menghapus `AWSPENDING` label dalam panggilan API yang sama. Secrets Manager menambahkan label `AWSPREVIOUS` pementasan ke versi sebelumnya, sehingga Anda mempertahankan versi rahasia terakhir yang diketahui. 

Metode ini **finish\$1secret** digunakan [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/secretsmanager.html#SecretsManager.Client.update_secret_version_stage](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/secretsmanager.html#SecretsManager.Client.update_secret_version_stage)untuk memindahkan label pementasan `AWSCURRENT` dari versi rahasia sebelumnya ke versi rahasia baru. Secrets Manager secara otomatis menambahkan label `AWSPREVIOUS` pementasan ke versi sebelumnya, sehingga Anda mempertahankan versi rahasia terakhir yang diketahui. 

**Kiat untuk menulis fungsi rotasi Anda sendiri**
+ Jangan hapus `AWSPENDING` sebelum titik ini, dan jangan hapus dengan menggunakan panggilan API terpisah, karena itu dapat menunjukkan kepada Secrets Manager bahwa rotasi tidak berhasil diselesaikan. Secrets Manager menambahkan label `AWSPREVIOUS` pementasan ke versi sebelumnya, sehingga Anda mempertahankan versi rahasia terakhir yang diketahui. 

Ketika rotasi berhasil, label `AWSPENDING` pementasan mungkin dilampirkan ke versi yang sama dengan `AWSCURRENT` versi, atau mungkin tidak dilampirkan ke versi apa pun. Jika label `AWSPENDING` pementasan ada tetapi tidak dilampirkan ke versi yang sama dengan`AWSCURRENT`, maka pemanggilan rotasi selanjutnya mengasumsikan bahwa permintaan rotasi sebelumnya masih dalam proses dan mengembalikan kesalahan. Ketika rotasi tidak berhasil, label `AWSPENDING` pementasan mungkin dilampirkan ke versi rahasia kosong. Lihat informasi yang lebih lengkap di [Memecahkan masalah rotasi](troubleshoot_rotation.md).

# AWS Secrets Manager templat fungsi rotasi
<a name="reference_available-rotation-templates"></a>

AWS Secrets Manager menyediakan satu set templat fungsi rotasi yang membantu mengotomatiskan manajemen kredenal yang aman untuk berbagai sistem dan layanan basis data. Template adalah fungsi ready-to-use Lambda yang menerapkan praktik terbaik untuk rotasi kredensi, membantu Anda mempertahankan postur keamanan Anda tanpa intervensi manual.

Template mendukung dua strategi rotasi utama:
+ *Rotasi pengguna tunggal* yang memperbarui kredensil untuk satu pengguna.
+ *Rotasi pengguna alternatif* yang mempertahankan dua pengguna terpisah untuk membantu menghilangkan waktu henti selama perubahan kredensi.

Secrets Manager juga menyediakan template generik yang berfungsi sebagai titik awal untuk semua jenis rahasia.

Untuk menggunakan template, lihat:
+ [Rotasi otomatis untuk rahasia database (konsol)](rotate-secrets_turn-on-for-db.md)
+ [Rotasi otomatis untuk rahasia non-database (konsol)](rotate-secrets_turn-on-for-other.md)

Untuk menulis fungsi rotasi Anda sendiri, lihat [Menulis fungsi rotasi](rotate-secrets_lambda-functions.md).

**Contents**
+ [Amazon RDS dan Amazon Aurora](#RDS_rotation_templates)
  + [Amazon RDS Db2 pengguna tunggal](#sar-template-db2-singleuser)
  + [Amazon RDS Db2 bergantian pengguna](#sar-template-db2-multiuser)
  + [Amazon RDS MariaDB pengguna tunggal](#sar-template-mariadb-singleuser)
  + [Amazon RDS MariaDB pengguna bergantian](#sar-template-mariadb-multiuser)
  + [Amazon RDS dan Amazon Aurora MySQL pengguna tunggal](#sar-template-mysql-singleuser)
  + [Amazon RDS dan Amazon Aurora MySQL bergantian pengguna](#sar-template-mysql-multiuser)
  + [Amazon RDS Oracle pengguna tunggal](#sar-template-oracle-singleuser)
  + [Amazon RDS Oracle bergantian pengguna](#sar-template-oracle-multiuser)
  + [Amazon RDS dan Amazon Aurora PostgreSQL pengguna tunggal](#sar-template-postgre-singleuser)
  + [Amazon RDS dan Amazon Aurora PostgreSQL pengguna bergantian](#sar-template-postgre-multiuser)
  + [Amazon RDS Microsoft pengguna SQLServer tunggal](#sar-template-sqlserver-singleuser)
  + [Amazon RDS Microsoft SQLServer bergantian pengguna](#sar-template-sqlserver-multiuser)
+ [Amazon DocumentDB (dengan kompatibilitas MongoDB)](#NON-RDS_rotation_templates)
  + [Amazon DocumentDB pengguna tunggal](#sar-template-mongodb-singleuser)
  + [Amazon DocumentDB pengguna bergantian](#sar-template-mongodb-multiuser)
+ [Amazon Redshift](#template-redshift)
  + [Amazon Redshift pengguna tunggal](#sar-template-redshift-singleuser)
  + [Amazon Redshift bergantian pengguna](#sar-template-redshift-multiuser)
+ [Amazon Timestream untuk InfluxDB](#template-TimeStream)
  + [Amazon Timestream untuk pengguna tunggal InfluxDB](#template-TimeStream-singleuser)
  + [Amazon Timestream untuk pengguna bergantian InfluxDB](#template-TimeStream-multiuser)
+ [Amazon ElastiCache](#template-ELC)
+ [Active Directory](#template-AD)
  + [Kredensil Direktori Aktif](#template-AD-password)
  + [Tab tombol Direktori Aktif](#template-AD-keytab)
+ [Jenis rahasia lainnya](#OTHER_rotation_templates)

## Amazon RDS dan Amazon Aurora
<a name="RDS_rotation_templates"></a>

### Amazon RDS Db2 pengguna tunggal
<a name="sar-template-db2-singleuser"></a>
+ **Nama template:** SecretsManager RDSDb2 RotationSingleUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna tunggal](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **`SecretString`struktur:**[Kredensi Amazon RDS dan Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRDSDb2RotationSingleUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRDSDb2RotationSingleUser/lambda_function.py)
+ **Ketergantungan:** [python-ibmdb](https://github.com/ibmdb/python-ibmdb)

### Amazon RDS Db2 bergantian pengguna
<a name="sar-template-db2-multiuser"></a>
+ **Nama template:** SecretsManager RDSDb2 RotationMultiUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna bergantian](rotation-strategy.md#rotating-secrets-two-users).
+ **`SecretString`struktur:**[Kredensi Amazon RDS dan Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRDSDb2RotationMultiUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRDSDb2RotationMultiUser/lambda_function.py)
+ **Ketergantungan:** [python-ibmdb](https://github.com/ibmdb/python-ibmdb)

### Amazon RDS MariaDB pengguna tunggal
<a name="sar-template-mariadb-singleuser"></a>
+ **Nama template:** SecretsManager RDSMaria DBRotation SingleUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna tunggal](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **`SecretString`struktur:**[Kredensi Amazon RDS dan Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRDSMariaDBRotationSingleUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRDSMariaDBRotationSingleUser/lambda_function.py)
+ **Ketergantungan:** PyMy SQL 1.0.2. Jika Anda menggunakan kata sandi sha256 untuk otentikasi, PyMy SQL [rsa]. Untuk informasi tentang penggunaan paket dengan kode yang dikompilasi dalam runtime Lambda, lihat [Bagaimana cara menambahkan paket Python dengan binari yang dikompilasi ke paket penerapan saya dan membuat paket tersebut kompatibel dengan](https://repost.aws/knowledge-center/lambda-python-package-compatible) Lambda? di *Pusat AWS Pengetahuan*.

### Amazon RDS MariaDB pengguna bergantian
<a name="sar-template-mariadb-multiuser"></a>
+ **Nama template:** SecretsManager RDSMaria DBRotation MultiUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna bergantian](rotation-strategy.md#rotating-secrets-two-users).
+ **`SecretString`struktur:**[Kredensi Amazon RDS dan Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRDSMariaDBRotationMultiUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRDSMariaDBRotationMultiUser/lambda_function.py)
+ **Ketergantungan:** PyMy SQL 1.0.2. Jika Anda menggunakan kata sandi sha256 untuk otentikasi, PyMy SQL [rsa]. Untuk informasi tentang penggunaan paket dengan kode yang dikompilasi dalam runtime Lambda, lihat [Bagaimana cara menambahkan paket Python dengan binari yang dikompilasi ke paket penerapan saya dan membuat paket tersebut kompatibel dengan](https://repost.aws/knowledge-center/lambda-python-package-compatible) Lambda? di *Pusat AWS Pengetahuan*.

### Amazon RDS dan Amazon Aurora MySQL pengguna tunggal
<a name="sar-template-mysql-singleuser"></a>
+ **Nama template:** SecretsManager RDSMy SQLRotation SingleUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna tunggal](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **`SecretString`Struktur yang diharapkan:**[Kredensi Amazon RDS dan Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRDSMySQLRotationSingleUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRDSMySQLRotationSingleUser/lambda_function.py)
+ **Ketergantungan:** PyMy SQL 1.0.2. Jika Anda menggunakan kata sandi sha256 untuk otentikasi, PyMy SQL [rsa]. Untuk informasi tentang penggunaan paket dengan kode yang dikompilasi dalam runtime Lambda, lihat [Bagaimana cara menambahkan paket Python dengan binari yang dikompilasi ke paket penerapan saya dan membuat paket tersebut kompatibel dengan](https://repost.aws/knowledge-center/lambda-python-package-compatible) Lambda? di *Pusat AWS Pengetahuan*.

### Amazon RDS dan Amazon Aurora MySQL bergantian pengguna
<a name="sar-template-mysql-multiuser"></a>
+ **Nama template:** SecretsManager RDSMy SQLRotation MultiUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna bergantian](rotation-strategy.md#rotating-secrets-two-users).
+ **`SecretString`Struktur yang diharapkan:**[Kredensi Amazon RDS dan Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRDSMySQLRotationMultiUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRDSMySQLRotationMultiUser/lambda_function.py)
+ **Ketergantungan:** PyMy SQL 1.0.2. Jika Anda menggunakan kata sandi sha256 untuk otentikasi, PyMy SQL [rsa]. Untuk informasi tentang penggunaan paket dengan kode yang dikompilasi dalam runtime Lambda, lihat [Bagaimana cara menambahkan paket Python dengan binari yang dikompilasi ke paket penerapan saya dan membuat paket tersebut kompatibel dengan](https://repost.aws/knowledge-center/lambda-python-package-compatible) Lambda? di *Pusat AWS Pengetahuan*.

### Amazon RDS Oracle pengguna tunggal
<a name="sar-template-oracle-singleuser"></a>
+ **Nama template:** SecretsManager RDSOracle RotationSingleUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna tunggal](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **`SecretString`Struktur yang diharapkan:**[Kredensi Amazon RDS dan Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRDSOracleRotationSingleUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRDSOracleRotationSingleUser/lambda_function.py)
+ **Ketergantungan:** [python-oracledb](https://github.com/oracle/python-oracledb) 2.4.1

### Amazon RDS Oracle bergantian pengguna
<a name="sar-template-oracle-multiuser"></a>
+ **Nama template:** SecretsManager RDSOracle RotationMultiUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna bergantian](rotation-strategy.md#rotating-secrets-two-users).
+ **`SecretString`Struktur yang diharapkan:**[Kredensi Amazon RDS dan Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRDSOracleRotationMultiUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRDSOracleRotationMultiUser/lambda_function.py)
+ **Ketergantungan:** [python-oracledb](https://github.com/oracle/python-oracledb) 2.4.1

### Amazon RDS dan Amazon Aurora PostgreSQL pengguna tunggal
<a name="sar-template-postgre-singleuser"></a>
+ **Nama template:** SecretsManager RDSPostgre SQLRotation SingleUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna tunggal](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **`SecretString`Struktur yang diharapkan:**[Kredensi Amazon RDS dan Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRDSPostgreSQLRotationSingleUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRDSPostgreSQLRotationSingleUser/lambda_function.py)
+ **Ketergantungan: PyGre SQL 5.2.5**

### Amazon RDS dan Amazon Aurora PostgreSQL pengguna bergantian
<a name="sar-template-postgre-multiuser"></a>
+ **Nama template:** SecretsManager RDSPostgre SQLRotation MultiUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna bergantian](rotation-strategy.md#rotating-secrets-two-users).
+ **`SecretString`Struktur yang diharapkan:**[Kredensi Amazon RDS dan Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRDSPostgreSQLRotationMultiUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRDSPostgreSQLRotationMultiUser/lambda_function.py)
+ **Ketergantungan: PyGre SQL 5.2.5**

### Amazon RDS Microsoft pengguna SQLServer tunggal
<a name="sar-template-sqlserver-singleuser"></a>
+ **Nama template:** SecretsManager RDSSQLServer RotationSingleUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna tunggal](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **`SecretString`Struktur yang diharapkan:**[Kredensi Amazon RDS dan Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRDSSQLServerRotationSingleUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRDSSQLServerRotationSingleUser/lambda_function.py)
+ **Ketergantungan:** Pymssql 2.2.2

### Amazon RDS Microsoft SQLServer bergantian pengguna
<a name="sar-template-sqlserver-multiuser"></a>
+ **Nama template:** SecretsManager RDSSQLServer RotationMultiUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna bergantian](rotation-strategy.md#rotating-secrets-two-users).
+ **`SecretString`Struktur yang diharapkan:**[Kredensi Amazon RDS dan Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRDSSQLServerRotationMultiUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRDSSQLServerRotationMultiUser/lambda_function.py)
+ **Ketergantungan:** Pymssql 2.2.2

## Amazon DocumentDB (dengan kompatibilitas MongoDB)
<a name="NON-RDS_rotation_templates"></a>

### Amazon DocumentDB pengguna tunggal
<a name="sar-template-mongodb-singleuser"></a>
+ **Nama template:** SecretsManagerMongo DBRotation SingleUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna tunggal](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **`SecretString`Struktur yang diharapkan:**[Kredensi Amazon DocumentDB](reference_secret_json_structure.md#reference_secret_json_structure_docdb).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerMongoDBRotationSingleUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerMongoDBRotationSingleUser/lambda_function.py)
+ **Ketergantungan: 4.2.0** PyMongo 

### Amazon DocumentDB pengguna bergantian
<a name="sar-template-mongodb-multiuser"></a>
+ **Nama template:** SecretsManagerMongo DBRotation MultiUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna bergantian](rotation-strategy.md#rotating-secrets-two-users).
+ **`SecretString`Struktur yang diharapkan:**[Kredensi Amazon DocumentDB](reference_secret_json_structure.md#reference_secret_json_structure_docdb).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerMongoDBRotationMultiUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerMongoDBRotationMultiUser/lambda_function.py)
+ **Ketergantungan: 4.2.0** PyMongo 

## Amazon Redshift
<a name="template-redshift"></a>

### Amazon Redshift pengguna tunggal
<a name="sar-template-redshift-singleuser"></a>
+ **Nama template:** SecretsManagerRedshiftRotationSingleUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna tunggal](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **`SecretString`Struktur yang diharapkan:**[Kredensi Amazon Redshift](reference_secret_json_structure.md#reference_secret_json_structure_RS).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRedshiftRotationSingleUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRedshiftRotationSingleUser/lambda_function.py)
+ **Ketergantungan: PyGre SQL 5.2.5**

### Amazon Redshift bergantian pengguna
<a name="sar-template-redshift-multiuser"></a>
+ **Nama template:** SecretsManagerRedshiftRotationMultiUser
+ **Strategi rotasi:**[Strategi rotasi: pengguna bergantian](rotation-strategy.md#rotating-secrets-two-users).
+ **`SecretString`Struktur yang diharapkan:**[Kredensi Amazon Redshift](reference_secret_json_structure.md#reference_secret_json_structure_RS).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRedshiftRotationMultiUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRedshiftRotationMultiUser/lambda_function.py)
+ **Ketergantungan: PyGre SQL 5.2.5**

## Amazon Timestream untuk InfluxDB
<a name="template-TimeStream"></a>

*Untuk menggunakan templat ini, lihat [Cara Amazon TimeStream untuk InfluxDB menggunakan rahasia](https://docs.aws.amazon.com/timestream/latest/developerguide/timestream-for-influx-security-db-secrets.html) di Panduan Pengembang Amazon Timestream.*

### Amazon Timestream untuk pengguna tunggal InfluxDB
<a name="template-TimeStream-singleuser"></a>
+ **Nama template:** SecretsManager  Masuknya DBRotation SingleUser
+ **`SecretString`Struktur yang diharapkan:**[Amazon Timestream untuk struktur rahasia InfluxDB](reference_secret_json_structure.md#reference_secret_json_structure_TIME).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerInfluxDBRotationSingleUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerInfluxDBRotationSingleUser/lambda_function.py)
+ **Ketergantungan: Klien python** InfluxDB 2.0

### Amazon Timestream untuk pengguna bergantian InfluxDB
<a name="template-TimeStream-multiuser"></a>
+ **Nama template:** SecretsManagerInflux DBRotation MultiUser
+ **`SecretString`Struktur yang diharapkan:**[Amazon Timestream untuk struktur rahasia InfluxDB](reference_secret_json_structure.md#reference_secret_json_structure_TIME).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerInfluxDBRotationMultiUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerInfluxDBRotationMultiUser/lambda_function.py)
+ **Ketergantungan: Klien python** InfluxDB 2.0

## Amazon ElastiCache
<a name="template-ELC"></a>

Untuk menggunakan templat ini, lihat [Memutar kata sandi secara otomatis untuk pengguna](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/User-Secrets-Manager.html) di *Panduan ElastiCache Pengguna Amazon*.
+ **Nama template:** SecretsManagerElasticacheUserRotation
+ **`SecretString`Struktur yang diharapkan:**[ElastiCache Kredensi Amazon](reference_secret_json_structure.md#reference_secret_json_structure_ELC).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerElasticacheUserRotation/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerElasticacheUserRotation/lambda_function.py)

## Active Directory
<a name="template-AD"></a>

### Kredensil Direktori Aktif
<a name="template-AD-password"></a>
+ **Nama template:** SecretsManagerActiveDirectoryRotationSingleUser
+ **`SecretString`Struktur yang diharapkan:**[Kredensil Direktori Aktif](reference_secret_json_structure.md#reference_secret_json_structure_AD).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerActiveDirectoryRotationSingleUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerActiveDirectoryRotationSingleUser/lambda_function.py)

### Tab tombol Direktori Aktif
<a name="template-AD-keytab"></a>
+ **Nama template:** SecretsManagerActiveDirectoryAndKeytabRotationSingleUser
+ **`SecretString`Struktur yang diharapkan:**[Kredensil Direktori Aktif](reference_secret_json_structure.md#reference_secret_json_structure_AD).
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerActiveDirectoryAndKeytabRotationSingleUser/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerActiveDirectoryAndKeytabRotationSingleUser/lambda_function.py)
+ **Ketergantungan**: msktutil

## Jenis rahasia lainnya
<a name="OTHER_rotation_templates"></a>

Secrets Manager menyediakan template ini sebagai titik awal bagi Anda untuk membuat fungsi rotasi untuk semua jenis rahasia.
+ **Nama template:** SecretsManagerRotationTemplate
+ **Kode sumber: https://github.com/aws-samples/** [aws-secrets-manager-rotation- lambdas/tree/master/SecretsManagerRotationTemplate/lambda \$1function.py](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerRotationTemplate/lambda_function.py)

# Izin peran eksekusi fungsi rotasi Lambda untuk AWS Secrets Manager
<a name="rotating-secrets-required-permissions-function"></a>

Karena[Rotasi dengan fungsi Lambda](rotate-secrets_lambda.md), ketika Secrets Manager menggunakan fungsi Lambda untuk memutar rahasia, Lambda mengasumsikan [peran eksekusi IAM](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) dan memberikan kredensil tersebut ke kode fungsi Lambda. Untuk petunjuk tentang cara mengatur rotasi otomatis, lihat: 
+ [Rotasi otomatis untuk rahasia database (konsol)](rotate-secrets_turn-on-for-db.md)
+ [Rotasi otomatis untuk rahasia non-database (konsol)](rotate-secrets_turn-on-for-other.md)
+ [Rotasi otomatis (AWS CLI)](rotate-secrets_turn-on-cli.md)

Contoh berikut menunjukkan kebijakan inline untuk peran eksekusi fungsi rotasi Lambda. Untuk membuat peran eksekusi dan melampirkan kebijakan izin, lihat [peran AWS Lambda eksekusi](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html).

**Topics**
+ [Kebijakan untuk peran eksekusi fungsi rotasi Lambda](#rotating-secrets-required-permissions-function-example)
+ [Pernyataan kebijakan untuk kunci yang dikelola pelanggan](#rotating-secrets-required-permissions-function-cust-key-example)
+ [Pernyataan kebijakan untuk strategi pengguna bergantian](#rotating-secrets-required-permissions-function-alternating-example)

## Kebijakan untuk peran eksekusi fungsi rotasi Lambda
<a name="rotating-secrets-required-permissions-function-example"></a>

Contoh kebijakan berikut memungkinkan fungsi rotasi untuk:
+ Jalankan operasi Secrets Manager untuk*SecretARN*.
+ Buat kata sandi baru.
+ Siapkan konfigurasi yang diperlukan jika database atau layanan Anda berjalan di VPC. Lihat [Mengonfigurasi fungsi Lambda untuk mengakses sumber daya](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html) di VPC.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:DescribeSecret",
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue",
                "secretsmanager:UpdateSecretVersionStage"
            ],
            "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName-AbCdEf"
    },
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetRandomPassword"
            ],
            "Resource": "*"
        },
        {
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DetachNetworkInterface"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

------

## Pernyataan kebijakan untuk kunci yang dikelola pelanggan
<a name="rotating-secrets-required-permissions-function-cust-key-example"></a>

Jika rahasia dienkripsi dengan kunci KMS selain Kunci yang dikelola AWS `aws/secretsmanager`, maka Anda perlu memberikan izin peran eksekusi Lambda untuk menggunakan kunci tersebut. Anda dapat menggunakan konteks [enkripsi secretArn](security-encryption.md#security-encryption-encryption-context) untuk membatasi penggunaan fungsi dekripsi, sehingga peran fungsi rotasi hanya memiliki akses untuk mendekripsi rahasia yang bertanggung jawab untuk berputar. Contoh berikut menunjukkan pernyataan untuk ditambahkan ke kebijakan peran eksekusi untuk mendekripsi rahasia menggunakan kunci KMS.

```
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:GenerateDataKey"
            ],
            "Resource": "KMSKeyARN",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:SecretARN": "SecretARN"
                }
            }
        }
```

Untuk menggunakan fungsi rotasi untuk beberapa rahasia yang dienkripsi dengan kunci yang dikelola pelanggan, tambahkan pernyataan seperti contoh berikut untuk memungkinkan peran eksekusi mendekripsi rahasia.

```
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:GenerateDataKey"
            ],
            "Resource": "KMSKeyARN",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:SecretARN": [
                        "arn1",
                        "arn2"
                    ]
                }
            }
        }
```

## Pernyataan kebijakan untuk strategi pengguna bergantian
<a name="rotating-secrets-required-permissions-function-alternating-example"></a>

Untuk informasi tentang *strategi rotasi pengguna bergantian*, lihat[Strategi rotasi fungsi Lambda](rotation-strategy.md).

Untuk rahasia yang berisi kredensi Amazon RDS, jika Anda menggunakan strategi pengguna bergantian dan rahasia superuser dikelola [oleh Amazon RDS](rotate-secrets_managed.md), maka Anda juga harus mengizinkan fungsi rotasi untuk memanggil read-only di APIs Amazon RDS sehingga bisa mendapatkan informasi koneksi untuk database. Kami sarankan Anda melampirkan kebijakan AWS terkelola [Amazon RDSRead OnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSReadOnlyAccess.html).

Contoh kebijakan berikut memungkinkan fungsi untuk:
+ Jalankan operasi Secrets Manager untuk*SecretARN*.
+ Ambil kredensialnya di rahasia superuser. Secrets Manager menggunakan kredensil dalam rahasia superuser untuk memperbarui kredensil dalam rahasia yang diputar.
+ Buat kata sandi baru.
+ Siapkan konfigurasi yang diperlukan jika database atau layanan Anda berjalan di VPC. Untuk informasi selengkapnya, lihat [Mengonfigurasi fungsi Lambda untuk mengakses sumber daya](https://docs.aws.amazon.com/lambda/latest/dg/vpc.html) di VPC.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:DescribeSecret",
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue",
                "secretsmanager:UpdateSecretVersionStage"
            ],
            "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName-AbCdEf"
    },
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName-AbCdEf"
    },
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetRandomPassword"
            ],
            "Resource": "*"
        },
        {
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DetachNetworkInterface"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

------

# Akses jaringan untuk fungsi AWS Lambda rotasi
<a name="rotation-function-network-access"></a>

Karena[Rotasi dengan fungsi Lambda](rotate-secrets_lambda.md), ketika Secrets Manager menggunakan fungsi Lambda untuk memutar rahasia, fungsi rotasi Lambda harus dapat mengakses rahasia. Jika rahasia Anda berisi kredensi, maka fungsi Lambda juga harus dapat mengakses sumber kredensional tersebut, seperti database atau layanan.

**Untuk mengakses rahasia**  
Fungsi rotasi Lambda Anda harus dapat mengakses titik akhir Secrets Manager. Jika fungsi Lambda Anda dapat mengakses internet, maka Anda dapat menggunakan titik akhir publik. Untuk menemukan titik akhir, lihat[AWS Secrets Manager titik akhir](asm_access.md#endpoints).  
Jika fungsi Lambda Anda berjalan di VPC yang tidak memiliki akses internet, kami sarankan Anda mengonfigurasi titik akhir pribadi layanan Secrets Manager dalam VPC Anda. VPC Anda kemudian dapat mencegat permintaan yang ditujukan ke titik akhir regional publik dan mengarahkannya ke titik akhir pribadi. Untuk informasi selengkapnya, lihat [Titik akhir VPC (AWS PrivateLink)](vpc-endpoint-overview.md).  
Atau, Anda dapat mengaktifkan fungsi Lambda Anda untuk mengakses titik akhir publik Secrets Manager dengan menambahkan gateway [NAT atau gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) [internet ke](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html) VPC Anda, yang memungkinkan lalu lintas dari VPC Anda mencapai titik akhir publik. Ini membuat VPC Anda berisiko lebih besar karena alamat IP untuk gateway dapat diserang dari Internet publik.

**(Opsional) Untuk mengakses database atau layanan**  
Untuk rahasia seperti kunci API, tidak ada database sumber atau layanan yang perlu Anda perbarui bersama dengan rahasianya.  
Jika database atau layanan Anda berjalan pada EC2 instans Amazon di VPC, sebaiknya Anda mengonfigurasi fungsi Lambda agar berjalan di VPC yang sama. Kemudian fungsi rotasi dapat berkomunikasi langsung dengan layanan Anda. Untuk informasi selengkapnya, lihat [Mengonfigurasi akses VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html#vpc-configuring).  
Untuk mengizinkan fungsi Lambda mengakses database atau layanan, Anda harus memastikan bahwa grup keamanan yang dilampirkan ke fungsi rotasi Lambda Anda memungkinkan koneksi keluar ke database atau layanan. Anda juga harus memastikan bahwa grup keamanan yang dilampirkan ke database atau layanan Anda mengizinkan koneksi masuk dari fungsi rotasi Lambda. 

# Memecahkan masalah rotasi AWS Secrets Manager
<a name="troubleshoot_rotation"></a>

Untuk banyak layanan, Secrets Manager menggunakan fungsi Lambda untuk memutar rahasia. Untuk informasi selengkapnya, lihat [Rotasi dengan fungsi Lambda](rotate-secrets_lambda.md). Fungsi rotasi Lambda berinteraksi dengan database atau layanan rahasianya serta Secrets Manager. Ketika rotasi tidak bekerja seperti yang Anda harapkan, Anda harus terlebih dahulu memeriksa CloudWatch log.

**catatan**  
Beberapa layanan dapat mengelola rahasia untuk Anda, termasuk mengelola rotasi otomatis. Untuk informasi selengkapnya, lihat [Rotasi terkelola untuk AWS Secrets Manager rahasia](rotate-secrets_managed.md).

**Topics**
+ [Cara memecahkan masalah kegagalan rotasi rahasia dalam fungsi AWS Lambda](#troubleshooting-secret-rotation-failures)
+ [Tidak ada aktivitas setelah “Menemukan kredensyal dalam variabel lingkungan”](#troubleshoot_rotation_timing-out)
+ [Tidak ada aktivitas setelah “createSecret”](#troubleshoot_rotation_createSecret)
+ [Kesalahan: “Akses ke KMS tidak diizinkan”](#troubleshoot_rotation_kms-key)
+ [Kesalahan: “Kunci hilang dari JSON rahasia”](#tshoot-lambda-mismatched-secretvalue)
+ [Kesalahan: “setSecret: Tidak dapat masuk ke database”](#troubleshoot_rotation_setSecret)
+ [Kesalahan: “Tidak dapat mengimpor modul 'lambda\$1function'”](#tshoot-python-version)
+ [Tingkatkan fungsi rotasi yang ada dari Python 3.7 ke 3.9](#troubleshoot_rotation_python39)
+ [Tingkatkan fungsi rotasi yang ada dari Python 3.9 ke 3.10](#troubleshoot_rotation_python_310)
+ [AWS Lambda rotasi rahasia dengan `PutSecretValue` gagal](#troubleshoot_rotation_putsecretvalue)
+ [Kesalahan: “Kesalahan saat menjalankan lambda *<arn>* selama *<a rotation>* langkah”](#concurrency-related-failures)

## Cara memecahkan masalah kegagalan rotasi rahasia dalam fungsi AWS Lambda
<a name="troubleshooting-secret-rotation-failures"></a>

Jika Anda mengalami kegagalan rotasi rahasia dengan fungsi Lambda Anda, gunakan langkah-langkah berikut untuk memecahkan masalah dan menyelesaikan masalah.

### Kemungkinan penyebab
<a name="possible-causes"></a>
+ Eksekusi bersamaan yang tidak memadai untuk fungsi Lambda
+ Kondisi balapan karena beberapa panggilan API selama rotasi
+ Logika fungsi Lambda salah
+ Masalah jaringan antara fungsi Lambda dan database

### Langkah-langkah pemecahan masalah umum
<a name="general-troubleshooting-steps"></a>

1. Menganalisis CloudWatch log:
   + Cari pesan kesalahan tertentu atau perilaku tak terduga di log fungsi Lambda
   + Verifikasi bahwa semua langkah rotasi (**CreateSecret****SetSecret**,**TestSecret**,,**FinishSecret**) sedang dicoba

1. Tinjau panggilan API selama rotasi:
   + Hindari membuat panggilan API yang bermutasi pada rahasia selama rotasi Lambda
   + Pastikan tidak ada kondisi balapan antara **RotateSecret** dan **PutSecretValue** panggilan

1. Verifikasi logika fungsi Lambda:
   + Konfirmasikan bahwa Anda menggunakan kode AWS sampel terbaru untuk rotasi rahasia
   + Jika menggunakan kode khusus, tinjau untuk penanganan yang tepat dari semua langkah rotasi

1. Periksa konfigurasi jaringan:
   + Verifikasi aturan grup keamanan memungkinkan fungsi Lambda mengakses database
   + Pastikan titik akhir VPC atau akses titik akhir publik yang tepat untuk Secrets Manager

1. Uji versi rahasia:
   + Verifikasi bahwa AWSCURRENT versi rahasia memungkinkan akses database
   + Periksa apakah AWSPREVIOUS atau AWSPENDING versi valid

1. Hapus rotasi yang tertunda:
   + Jika rotasi gagal secara konsisten, kosongkan label AWSPENDING pementasan dan coba lagi rotasi

1. Periksa pengaturan konkurensi Lambda:
   + Verifikasi bahwa pengaturan konkurensi sesuai untuk beban kerja Anda
   + Jika Anda mencurigai adanya masalah konkurensi, lihat bagian “Memecahkan masalah kegagalan rotasi terkait kesepakatan”

## Tidak ada aktivitas setelah “Menemukan kredensyal dalam variabel lingkungan”
<a name="troubleshoot_rotation_timing-out"></a>

Jika tidak ada aktivitas setelah “Ditemukan kredensial dalam variabel lingkungan”, dan durasi tugas panjang, misalnya batas waktu Lambda default 30000ms, maka fungsi Lambda mungkin habis waktu saat mencoba mencapai titik akhir Secrets Manager.

Fungsi rotasi Lambda Anda harus dapat mengakses titik akhir Secrets Manager. Jika fungsi Lambda Anda dapat mengakses internet, maka Anda dapat menggunakan titik akhir publik. Untuk menemukan titik akhir, lihat[AWS Secrets Manager titik akhir](asm_access.md#endpoints).

Jika fungsi Lambda Anda berjalan di VPC yang tidak memiliki akses internet, kami sarankan Anda mengonfigurasi titik akhir pribadi layanan Secrets Manager dalam VPC Anda. VPC Anda kemudian dapat mencegat permintaan yang ditujukan ke titik akhir regional publik dan mengarahkannya ke titik akhir pribadi. Untuk informasi selengkapnya, lihat [Titik akhir VPC (AWS PrivateLink)](vpc-endpoint-overview.md).

Atau, Anda dapat mengaktifkan fungsi Lambda Anda untuk mengakses titik akhir publik Secrets Manager dengan menambahkan gateway [NAT atau gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) [internet ke](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html) VPC Anda, yang memungkinkan lalu lintas dari VPC Anda mencapai titik akhir publik. Ini membuat VPC Anda berisiko lebih besar karena alamat IP untuk gateway dapat diserang dari Internet publik.

## Tidak ada aktivitas setelah “createSecret”
<a name="troubleshoot_rotation_createSecret"></a>

Berikut ini adalah masalah yang dapat menyebabkan rotasi berhenti setelah createSecret:

**Jaringan VPC ACLs tidak mengizinkan lalu lintas HTTPS masuk dan keluar.**  
Untuk informasi selengkapnya, lihat [Mengontrol lalu lintas ke subnet menggunakan Jaringan ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) di Panduan *Pengguna Amazon VPC*.

**Konfigurasi batas waktu fungsi Lambda terlalu pendek untuk melakukan tugas. **  
Untuk informasi selengkapnya, lihat [Mengonfigurasi opsi fungsi Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html) di Panduan *AWS Lambda Pengembang.*

**Endpoint VPC Secrets Manager tidak mengizinkan VPC CIDRs masuk dalam grup keamanan yang ditetapkan. **  
Untuk informasi selengkapnya, lihat [Mengontrol lalu lintas ke sumber daya menggunakan grup keamanan](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) di *Panduan Pengguna Amazon VPC*.

**Kebijakan titik akhir VPC Secrets Manager tidak mengizinkan Lambda menggunakan titik akhir VPC. **  
Untuk informasi selengkapnya, lihat [Menggunakan titik akhir AWS Secrets Manager VPC](vpc-endpoint-overview.md).

**Rahasianya menggunakan rotasi pengguna bergantian, rahasia superuser dikelola oleh Amazon RDS, dan fungsi Lambda tidak dapat mengakses RDS API.**  
Untuk [rotasi pengguna bergantian](rotation-strategy.md#rotating-secrets-two-users) di mana rahasia superuser [dikelola oleh AWS layanan lain](service-linked-secrets.md), fungsi rotasi Lambda harus dapat memanggil titik akhir layanan untuk mendapatkan informasi koneksi database. Kami menyarankan Anda mengonfigurasi titik akhir VPC untuk layanan database. Untuk informasi lebih lanjut, lihat:  
+  [Amazon RDS API dan titik akhir VPC antarmuka](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/vpc-interface-endpoints.html) di Panduan Pengguna *Amazon* RDS.
+ [Bekerja dengan titik akhir VPC](https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-working-with-endpoints.html) di Panduan Manajemen Pergeseran Merah *Amazon*.

## Kesalahan: “Akses ke KMS tidak diizinkan”
<a name="troubleshoot_rotation_kms-key"></a>

Jika Anda lihat`ClientError: An error occurred (AccessDeniedException) when calling the GetSecretValue operation: Access to KMS is not allowed`, fungsi rotasi tidak memiliki izin untuk mendekripsi rahasia menggunakan kunci KMS yang digunakan untuk mengenkripsi rahasia. Mungkin ada kondisi dalam kebijakan izin yang membatasi konteks enkripsi ke rahasia tertentu. Untuk informasi tentang izin yang diperlukan, lihat[Pernyataan kebijakan untuk kunci yang dikelola pelanggan](rotating-secrets-required-permissions-function.md#rotating-secrets-required-permissions-function-cust-key-example).

## Kesalahan: “Kunci hilang dari JSON rahasia”
<a name="tshoot-lambda-mismatched-secretvalue"></a>

Fungsi rotasi Lambda membutuhkan nilai rahasia berada dalam struktur JSON tertentu. Jika Anda melihat kesalahan ini, maka JSON mungkin kehilangan kunci yang coba diakses oleh fungsi rotasi. Untuk informasi tentang struktur JSON untuk setiap jenis rahasia, lihat[Struktur rahasia JSON AWS Secrets Manager](reference_secret_json_structure.md).

## Kesalahan: “setSecret: Tidak dapat masuk ke database”
<a name="troubleshoot_rotation_setSecret"></a>

Berikut ini adalah masalah yang dapat menyebabkan kesalahan ini:

**Fungsi rotasi tidak dapat mengakses database.**  
Jika durasi tugas panjang, misalnya lebih dari 5000 ms, maka fungsi rotasi Lambda mungkin tidak dapat mengakses database melalui jaringan.   
Jika database atau layanan Anda berjalan pada instans Amazon EC2 di VPC, sebaiknya Anda mengonfigurasi fungsi Lambda agar berjalan di VPC yang sama. Kemudian fungsi rotasi dapat berkomunikasi langsung dengan layanan Anda. Untuk informasi selengkapnya, lihat [Mengonfigurasi akses VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html#vpc-configuring).  
Untuk mengizinkan fungsi Lambda mengakses database atau layanan, Anda harus memastikan bahwa grup keamanan yang dilampirkan ke fungsi rotasi Lambda Anda memungkinkan koneksi keluar ke database atau layanan. Anda juga harus memastikan bahwa grup keamanan yang dilampirkan ke database atau layanan Anda mengizinkan koneksi masuk dari fungsi rotasi Lambda. 

**Kredensi dalam rahasia tidak benar.**  
Jika durasi tugas pendek, maka fungsi rotasi Lambda mungkin tidak dapat mengautentikasi dengan kredensyal dalam rahasia. Periksa kredensyal dengan masuk secara manual dengan informasi dalam `AWSCURRENT` dan `AWSPREVIOUS` versi rahasia menggunakan perintah. AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html)

**Database digunakan `scram-sha-256` untuk mengenkripsi kata sandi.**  
Jika database Anda adalah Aurora PostgreSQL versi 13 atau yang lebih baru dan digunakan `scram-sha-256` untuk mengenkripsi kata sandi, tetapi fungsi rotasi menggunakan `libpq` versi 9 atau lebih lama yang tidak mendukung`scram-sha-256`, maka fungsi rotasi tidak dapat terhubung ke database.   

**Untuk menentukan pengguna database mana yang menggunakan `scram-sha-256` enkripsi**
+ Lihat *Memeriksa pengguna dengan kata sandi non-Scram* di blog [Otentikasi SCRAM di RDS](https://aws.amazon.com/blogs/database/scram-authentication-in-rds-for-postgresql-13/) untuk PostgreSQL 13.

**Untuk menentukan versi fungsi rotasi `libpq` Anda yang digunakan**

1. Di komputer berbasis Linux, di konsol Lambda, navigasikan ke fungsi rotasi Anda dan unduh bundel penerapan. Buka kompres file zip ke direktori kerja.

1. Pada baris perintah, di direktori kerja, jalankan:

   `readelf -a libpq.so.5 | grep RUNPATH`

1. Jika Anda melihat string*`PostgreSQL-9.4.x`*, atau versi utama kurang dari 10, maka fungsi rotasi tidak mendukung`scram-sha-256`.
   + Output untuk fungsi rotasi yang tidak mendukung`scram-sha-256`:

     `0x000000000000001d (RUNPATH) Library runpath: [/local/p4clients/pkgbuild-a1b2c/workspace/build/PostgreSQL/PostgreSQL-9.4.x_client_only.123456.0/AL2_x86_64/DEV.STD.PTHREAD/build/private/tmp/brazil-path/build.libfarm/lib:/local/p4clients/pkgbuild-a1b2c/workspace/src/PostgreSQL/build/private/install/lib]`
   + Output untuk fungsi rotasi yang mendukung`scram-sha-256`:

     `0x000000000000001d (RUNPATH) Library runpath: [/local/p4clients/pkgbuild-a1b2c/workspace/build/PostgreSQL/PostgreSQL-10.x_client_only.123456.0/AL2_x86_64/DEV.STD.PTHREAD/build/private/tmp/brazil-path/build.libfarm/lib:/local/p4clients/pkgbuild-a1b2c/workspace/src/PostgreSQL/build/private/install/lib]`
   + Output untuk fungsi rotasi yang mendukung`scram-sha-256`:

     `0x000000000000001d (RUNPATH) Library runpath: [/local/p4clients/pkgbuild- a1b2c /workspace/build/PostgreSQL/PostgreSQL-14.x_client_only. 123456 .0/AL2_x86_64/DEV.STD.PTHREAD/build/private/tmp/brazil-path/build.libfarm/lib:/local/p4clients/pkgbuild- a1b2c /workspace/src/PostgreSQL/build/private/install/lib]`
   + Output untuk fungsi rotasi yang mendukung`scram-sha-256`:

     `0x000000000000001d (RUNPATH) Library runpath: [/local/p4clients/pkgbuild- a1b2c/workspace/build/PostgreSQL/PostgreSQL- 14.x_client_only.123456.0/AL2_x86_64/DEV.STD.PTHREAD/build/private/tmp/brazil- path/build.libfarm/lib:/local/p4clients/pkgbuild- a1b2c/workspace/src/PostgreSQL/build/private/install/lib]`
Jika Anda mengatur rotasi rahasia otomatis sebelum 30 Desember 2021, fungsi rotasi Anda menggabungkan versi sebelumnya `libpq` yang tidak mendukung`scram-sha-256`. Untuk mendukung`scram-sha-256`, Anda perlu [membuat ulang fungsi rotasi Anda](rotate-secrets_turn-on-for-db.md). 

**Database membutuhkan SSL/TLS akses.**  
Jika database Anda memerlukan SSL/TLS koneksi, tetapi fungsi rotasi menggunakan koneksi yang tidak terenkripsi, maka fungsi rotasi tidak dapat terhubung ke database. Fungsi rotasi untuk Amazon RDS (kecuali Oracle dan Db2) dan Amazon DocumentDB secara otomatis menggunakan Secure Socket Layer (SSL) atau Transport Layer Security (TLS) untuk terhubung ke database Anda, jika tersedia. Jika tidak, mereka menggunakan koneksi yang tidak terenkripsi.  
Jika Anda mengatur rotasi rahasia otomatis sebelum 20 Desember 2021, fungsi rotasi Anda mungkin didasarkan pada templat sebelumnya yang tidak mendukungSSL/TLS. To support connections that use SSL/TLS, Anda perlu [membuat ulang fungsi rotasi Anda](rotate-secrets_turn-on-for-db.md). 

**Untuk menentukan kapan fungsi rotasi Anda dibuat**

1. Di konsol Secrets Manager [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/), buka rahasia Anda. Di bagian **konfigurasi Rotasi**, di bawah **fungsi rotasi Lambda, Anda melihat fungsi** **Lambda ARN**, misalnya,. `arn:aws:lambda:aws-region:123456789012:function:SecretsManagerMyRotationFunction ` Salin nama fungsi dari akhir ARN, dalam contoh ini. ` SecretsManagerMyRotationFunction ` 

1. Di AWS Lambda konsol [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/), di bawah **Fungsi**, tempel nama fungsi Lambda Anda di kotak pencarian, pilih Enter, lalu pilih fungsi Lambda. 

1. Di halaman detail fungsi, pada tab **Konfigurasi**, di bawah **Tag**, salin nilai di sebelah kunci **aws:cloudformation:stack-name**. 

1. Di AWS CloudFormation konsol [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/), di bawah **Tumpukan**, tempel nilai kunci di kotak pencarian, lalu pilih Enter.

1. Daftar tumpukan menyaring sehingga hanya tumpukan yang membuat fungsi rotasi Lambda yang muncul. Di kolom **Tanggal dibuat**, lihat tanggal tumpukan dibuat. Ini adalah tanggal fungsi rotasi Lambda dibuat.

## Kesalahan: “Tidak dapat mengimpor modul 'lambda\$1function'”
<a name="tshoot-python-version"></a>

Anda mungkin menerima kesalahan ini jika Anda menjalankan fungsi Lambda sebelumnya yang secara otomatis ditingkatkan dari Python 3.7 ke versi Python yang lebih baru. Untuk mengatasi kesalahan, Anda dapat mengubah versi fungsi Lambda kembali ke Python 3.7, dan kemudian. [Tingkatkan fungsi rotasi yang ada dari Python 3.7 ke 3.9](#troubleshoot_rotation_python39) Untuk informasi selengkapnya, lihat [Mengapa rotasi fungsi Secrets Manager Lambda saya gagal dengan kesalahan “modul pg tidak ditemukan”](https://repost.aws/knowledge-center/secrets-manager-lambda-rotation)? di *AWS re:post*.

## Tingkatkan fungsi rotasi yang ada dari Python 3.7 ke 3.9
<a name="troubleshoot_rotation_python39"></a>

Beberapa fungsi rotasi yang dibuat sebelum November 2022 menggunakan Python 3.7. AWS SDK untuk Python berhenti mendukung Python 3.7 pada Desember 2023. Untuk informasi selengkapnya, lihat [Pembaruan kebijakan dukungan Python untuk AWS SDKs dan Alat](https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/). Untuk beralih ke fungsi rotasi baru yang menggunakan Python 3.9, Anda dapat menambahkan properti runtime ke fungsi rotasi yang ada atau membuat ulang fungsi rotasi.

**Untuk menemukan fungsi rotasi Lambda mana yang menggunakan Python 3.7**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Dalam daftar **Fungsi**, filter untuk**SecretsManager**.

1. Dalam daftar fungsi yang difilter, di bawah **Runtime**, cari Python 3.7.

**Topics**
+ [Opsi 1: Buat ulang fungsi rotasi menggunakan CloudFormation](#update-python-opt-1)
+ [Opsi 2: Perbarui runtime untuk fungsi rotasi yang ada menggunakan CloudFormation](#update-python-opt-2)
+ [Opsi 3: Untuk AWS CDK pengguna, tingkatkan perpustakaan CDK](#update-python-opt-3)

### Opsi 1: Buat ulang fungsi rotasi menggunakan CloudFormation
<a name="update-python-opt-1"></a>

Saat Anda menggunakan konsol Secrets Manager untuk mengaktifkan rotasi, Secrets Manager menggunakan CloudFormation untuk membuat sumber daya yang diperlukan, termasuk fungsi rotasi Lambda. Jika Anda menggunakan konsol untuk mengaktifkan rotasi, atau Anda membuat fungsi rotasi menggunakan CloudFormation tumpukan, Anda dapat menggunakan CloudFormation tumpukan yang sama untuk membuat ulang fungsi rotasi dengan nama baru. Fungsi baru menggunakan versi Python yang lebih baru.

**Untuk menemukan CloudFormation tumpukan yang menciptakan fungsi rotasi**
+ **Pada halaman detail fungsi Lambda, pada tab **Konfigurasi**, pilih Tag.** **Lihat ARN di sebelah aws:cloudformation:stack-id.**

  Nama tumpukan disematkan di ARN, seperti yang ditunjukkan pada contoh berikut.
  + ARN: `arn:aws:cloudformation:us-west-2:408736277230:stack/SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda-3CUDHZMDMBO8/79fc9050-2eef-11ed-80f0-021fb13c0537`
  + Nama tumpukan: **SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda**

**Untuk membuat ulang fungsi rotasi ()CloudFormation**

1. Di CloudFormation, cari tumpukan berdasarkan nama, lalu pilih **Perbarui**. 

   Jika kotak dialog muncul merekomendasikan Anda memperbarui tumpukan root, pilih **Buka tumpukan root**, lalu pilih **Perbarui**.

1. Pada halaman **Update stack**, di bawah **Siapkan template**, pilih **Edit di Application Composer**, dan kemudian di bawah **Edit template di Application Composer**, pilih tombol **Edit di Application** Composer.

1. Di Application Composer, lakukan hal berikut:

   1. Dalam kode template, di`SecretRotationScheduleHostedRotationLambda`, ganti nilai untuk `"functionName": "SecretsManagerTestRotationRDS"` dengan nama fungsi baru, misalnya di JSON, `"functionName": "SecretsManagerTestRotationRDSupdated"` 

   1. Pilih **Perbarui template**.

   1. Di kotak CloudFormation dialog **Lanjutkan ke**, pilih **Konfirmasi dan lanjutkan ke CloudFormation**.

1. Lanjutkan melalui alur kerja CloudFormation tumpukan dan kemudian pilih **Kirim**.

### Opsi 2: Perbarui runtime untuk fungsi rotasi yang ada menggunakan CloudFormation
<a name="update-python-opt-2"></a>

Saat Anda menggunakan konsol Secrets Manager untuk mengaktifkan rotasi, Secrets Manager menggunakan CloudFormation untuk membuat sumber daya yang diperlukan, termasuk fungsi rotasi Lambda. Jika Anda menggunakan konsol untuk mengaktifkan rotasi, atau Anda membuat fungsi rotasi menggunakan CloudFormation tumpukan, Anda dapat menggunakan CloudFormation tumpukan yang sama untuk memperbarui runtime untuk fungsi rotasi.

**Untuk menemukan CloudFormation tumpukan yang menciptakan fungsi rotasi**
+ **Pada halaman detail fungsi Lambda, pada tab **Konfigurasi**, pilih Tag.** **Lihat ARN di sebelah aws:cloudformation:stack-id.**

  Nama tumpukan disematkan di ARN, seperti yang ditunjukkan pada contoh berikut.
  + ARN: `arn:aws:cloudformation:us-west-2:408736277230:stack/SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda-3CUDHZMDMBO8/79fc9050-2eef-11ed-80f0-021fb13c0537`
  + Nama tumpukan: **SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda**

**Untuk memperbarui runtime untuk fungsi rotasi ()CloudFormation**

1. Di CloudFormation, cari tumpukan berdasarkan nama, lalu pilih **Perbarui**. 

   Jika kotak dialog muncul merekomendasikan Anda memperbarui tumpukan root, pilih **Buka tumpukan root**, lalu pilih **Perbarui**.

1. Pada halaman **Update stack**, di bawah **Siapkan template**, pilih **Edit di Application Composer**, dan kemudian di bawah **Edit template di Application Composer**, pilih tombol **Edit di Application** Composer.

1. Di Application Composer, lakukan hal berikut:

   1. Dalam template JSON, untuk, di bawah`SecretRotationScheduleHostedRotationLambda`, di bawah `Properties``Parameters`, tambahkan**"runtime": "python3.9"**.

   1. Pilih **Perbarui template**.

   1. Di kotak CloudFormation dialog **Lanjutkan ke**, pilih **Konfirmasi dan lanjutkan ke CloudFormation**.

1. Lanjutkan melalui alur kerja CloudFormation tumpukan dan kemudian pilih **Kirim**.

### Opsi 3: Untuk AWS CDK pengguna, tingkatkan perpustakaan CDK
<a name="update-python-opt-3"></a>

Jika Anda menggunakan versi AWS CDK sebelumnya v2.94.0 untuk mengatur rotasi rahasia Anda, Anda dapat memperbarui fungsi Lambda dengan memutakhirkan ke v2.94.0 atau yang lebih baru. Untuk informasi selengkapnya, lihat [Panduan Pengembang AWS Cloud Development Kit (AWS CDK) v2](https://docs.aws.amazon.com/cdk/v2/guide/home.html).

## Tingkatkan fungsi rotasi yang ada dari Python 3.9 ke 3.10
<a name="troubleshoot_rotation_python_310"></a>

Secrets Manager beralih dari Python 3.9 ke 3.10 untuk fungsi rotasi Lambda. Untuk beralih ke fungsi rotasi baru yang menggunakan Python 3.10, Anda harus mengikuti jalur pemutakhiran berdasarkan metode penerapan Anda. Gunakan prosedur berikut untuk memutakhirkan versi Python dan dependensi yang mendasarinya.

**Untuk menemukan fungsi rotasi Lambda mana yang menggunakan Python 3.9**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Dalam daftar **Fungsi**, filter untuk**SecretsManager**.

1. Dalam daftar fungsi yang difilter, di bawah **Runtime**, cari**Python 3.9**.

### Perbarui jalur dengan metode penerapan
<a name="update-python-3.9-paths"></a>

Fungsi rotasi Lambda yang diidentifikasi dalam daftar ini dapat digunakan melalui konsol Secrets Manager, AWS Serverless Application Repository aplikasi, atau transformasi. CloudFormation Masing-masing strategi penyebaran ini memiliki jalur pembaruan yang berbeda. 

Gunakan salah satu prosedur berikut untuk memperbarui fungsi rotasi Lambda Anda, tergantung pada bagaimana fungsi Anda diterapkan.

------
#### [ AWS Secrets Manager console-deployed functions ]

Fungsi Lambda baru harus diterapkan melalui AWS Secrets Manager konsol karena Anda tidak dapat memperbarui dependensi secara manual untuk fungsi Lambda yang ada.

Gunakan prosedur berikut untuk memutakhirkan fungsi yang digunakan AWS Secrets Manager konsol.

1. Buka konsol Secrets Manager di [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Di bawah **AWS Secrets Manager**, pilih **Rahasia**. Pilih rahasia yang menggunakan fungsi Lambda yang ingin Anda perbarui.

1. Arahkan ke tab **Rotasi** dan pilih opsi **Perbarui konfigurasi rotasi.**

1. Di bawah **Fungsi rotasi**, pilih **Buat fungsi baru**, dan masukkan nama baru untuk fungsi rotasi Lambda.

   1. (Opsional) Setelah pembaruan selesai, Anda dapat menguji fungsi Lambda yang diperbarui untuk mengonfirmasi bahwa pembaruan berfungsi seperti yang diharapkan. Di bawah tab **Rotasi**, pilih **Putar Rahasia Segera** untuk memulai rotasi langsung.

   1. (Opsional) Anda dapat melihat log fungsi dan versi Python yang digunakan saat runtime di Amazon. CloudWatch Untuk informasi selengkapnya, lihat [Melihat CloudWatch Log untuk fungsi Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs-view.html#monitoring-cloudwatchlogs-console) di Panduan *AWS Lambda Pengembang*.

1. Setelah fungsi rotasi baru diatur, Anda dapat menghapus fungsi rotasi lama.

------
#### [ AWS Serverless Application Repository deployments ]

Prosedur berikut menunjukkan cara memutakhirkan AWS Serverless Application Repository penerapan. Fungsi Lambda yang digunakan melalui AWS Serverless Application Repository memiliki spanduk yang menyatakan `This function belongs to an application. Click here to manage it.` yang mencakup tautan ke aplikasi Lambda tempat fungsi tersebut berada.

**penting**  
AWS Serverless Application Repository ketersediaan Wilayah AWS tergantung.

Gunakan prosedur berikut untuk memperbarui fungsi yang AWS Serverless Application Repository diterapkan.

1. Buka AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Arahkan ke tab **Konfigurasi** fungsi Lambda yang perlu diperbarui.

   1. Anda akan memerlukan informasi berikut tentang fungsi Anda saat memperbarui AWS Serverless Application Repository aplikasi yang diterapkan. Anda dapat menemukan informasi ini di konsol Lambda.
     + **Nama aplikasi Lambda**
       + Nama aplikasi Lambda dapat ditemukan dengan menggunakan tautan di spanduk. Misalnya, spanduk menyatakan hal berikut`serverlessrepo-SecretsManagerRedshiftRotationSingleUser`. Nama dalam contoh ini adalah`SecretsManagerRedshiftRotationSingleUser`.
     + **Nama fungsi rotasi Lambda**
     + **Titik akhir Secrets Manager**
       + **Titik akhir dapat ditemukan di bawah tab **Konfigurasi** dan **variabel Lingkungan yang ditetapkan ke variabel** SECRETS\$1MANAGER\$1ENDPOINT.**

1. Untuk meng-upgrade Python, Anda harus memperbarui versi semantik dari aplikasi tanpa server. Lihat [Memperbarui Aplikasi](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-how-to-consume-new-version.html#update-applications) di *Panduan AWS Serverless Application Repository Pengembang*.

------
#### [ Custom Lambda rotation functions ]

Jika Anda membuat fungsi rotasi Lambda kustom, Anda harus memutakhirkan setiap dependensi paket dan runtime untuk fungsi-fungsi ini. Untuk informasi selengkapnya, lihat [Upgrade runtime fungsi Lambda ke](https://repost.aws/knowledge-center/lambda-upgrade-function-runtime) versi terbaru.

------
#### [ AWS::SecretsManager-2024-09-16 transform macro ]

Jika fungsi Lambda diterapkan melalui transformasi ini, [memperbarui tumpukan menggunakan template yang ada akan memungkinkan Anda menggunakan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-direct.html) runtime Lambda yang diperbarui. 

Gunakan prosedur berikut untuk memperbarui CloudFormation tumpukan menggunakan template yang ada.

1. Buka CloudFormation konsol di [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Pada halaman **Stacks**, pilih tumpukan yang ingin Anda perbarui.

1. Pilih **Perbarui** pada panel detail tumpukan.

1. Untuk **Pilih metode pembaruan templat**, pilih **Pembaruan langsung**.

1. Pada halaman **Tentukan template**, pilih **Gunakan template yang ada**.

1. Simpan semua opsi lain pada nilai defaultnya, lalu pilih **Perbarui tumpukan**.

Jika Anda mengalami masalah saat memperbarui tumpukan, lihat [Menentukan penyebab kegagalan tumpukan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/determine-root-cause-for-stack-failures.html) di *Panduan CloudFormation Pengguna*.

------
#### [ AWS::SecretsManager-2020-07-23 transform macro ]

Kami menyarankan Anda bermigrasi ke versi transformasi yang lebih baru jika Anda menggunakan. `AWS::SecretsManager-2020-07-23` Lihat [Memperkenalkan versi AWS Secrets Manager transformasi yang disempurnakan:: AWS: SecretsManager -2024-09-16](https://aws.amazon.com/blogs/security/introducing-an-enhanced-version-of-the-aws-secrets-manager-transform-awssecretsmanager-2024-09-16/) di Blog *AWS Keamanan* untuk informasi selengkapnya. Jika Anda terus menggunakan`AWS::SecretsManager-2020-07-23`, Anda dapat mengalami kesalahan ketidakcocokan antara versi runtime Anda dan artefak kode fungsi Lambda. Untuk informasi selengkapnya, lihat [AWS::SecretsManager:: RotationSchedule HostedRotationLambda](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-runtime) di *Referensi CloudFormation Template*. 

Jika Anda mengalami masalah saat memperbarui tumpukan, [Tentukan penyebab kegagalan tumpukan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/determine-root-cause-for-stack-failures.html) di *Panduan CloudFormation Pengguna*.

------

**Verifikasi peningkatan Python**  
**Untuk memverifikasi peningkatan Python, buka konsol Lambda ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) dan akses halaman Fungsi.** Pilih fungsi yang Anda perbarui. Di bawah bagian **Sumber kode**, tinjau file yang disertakan dalam direktori dan pastikan file Python .so adalah versi. `3.10`

## AWS Lambda rotasi rahasia dengan `PutSecretValue` gagal
<a name="troubleshoot_rotation_putsecretvalue"></a>

Jika Anda menggunakan peran yang diasumsikan atau rotasi lintas akun dengan Secrets Manager dan Anda menemukan **RotationFailed** acara CloudTrail dengan pesan: Versi rahasia tertunda *VERSION\$1ID * untuk Rahasia tidak *SECRET\$1ARN * dibuat oleh *LAMBDA\$1ARN.* Lambda Hapus `AWSPENDING` label pementasan dan mulai ulang rotasi, maka Anda perlu memperbarui fungsi Lambda Anda untuk menggunakan parameter. `RotationToken`<a name="troubleshoot_rotation_procedure"></a>

## Perbarui fungsi rotasi Lambda untuk disertakan `RotationToken`
<a name="troubleshoot_rotation_procedure"></a>

1. Unduh kode fungsi Lambda
   + Buka konsol Lambda
   + **Di panel navigasi, pilih Fungsi**
   + **Pilih fungsi rotasi rahasia Lambda Anda untuk nama Fungsi**
   + **Untuk **Download**, pilih salah satu **Kode fungsi.zip**, **AWS SAM file, Keduanya****
   + Pilih **OK** untuk menyimpan fungsi pada mesin lokal Anda.

1. Sunting `Lambda_handler`

   Sertakan parameter rotation\$1token dalam langkah create\$1secret untuk rotasi lintas akun:

   ```
   def lambda_handler(event, context):
       """Secrets Manager Rotation Template
   
       This is a template for creating an AWS Secrets Manager rotation lambda
   
       Args:
           event (dict): Lambda dictionary of event parameters. These keys must include the following:
               - SecretId: The secret ARN or identifier
               - ClientRequestToken: The ClientRequestToken of the secret version
               - Step: The rotation step (one of createSecret, setSecret, testSecret, or finishSecret)
               - RotationToken: the rotation token to put as parameter for PutSecretValue call
   
           context (LambdaContext): The Lambda runtime information
   
       Raises:
           ResourceNotFoundException: If the secret with the specified arn and stage does not exist
   
           ValueError: If the secret is not properly configured for rotation
   
           KeyError: If the event parameters do not contain the expected keys
   
       """
       arn = event['SecretId']
       token = event['ClientRequestToken']
       step = event['Step']
       # Add the rotation token
       rotation_token = event['RotationToken']
   
       # Setup the client
       service_client = boto3.client('secretsmanager', endpoint_url=os.environ['SECRETS_MANAGER_ENDPOINT'])
   
       # Make sure the version is staged correctly
       metadata = service_client.describe_secret(SecretId=arn)
       if not metadata['RotationEnabled']:
           logger.error("Secret %s is not enabled for rotation" % arn)
           raise ValueError("Secret %s is not enabled for rotation" % arn)
       versions = metadata['VersionIdsToStages']
       if token not in versions:
           logger.error("Secret version %s has no stage for rotation of secret %s." % (token, arn))
           raise ValueError("Secret version %s has no stage for rotation of secret %s." % (token, arn))
       if "AWSCURRENT" in versions[token]:
           logger.info("Secret version %s already set as AWSCURRENT for secret %s." % (token, arn))
           return
       elif "AWSPENDING" not in versions[token]:
           logger.error("Secret version %s not set as AWSPENDING for rotation of secret %s." % (token, arn))
           raise ValueError("Secret version %s not set as AWSPENDING for rotation of secret %s." % (token, arn))
       # Use rotation_token
       if step == "createSecret":
           create_secret(service_client, arn, token, rotation_token)
   
       elif step == "setSecret":
           set_secret(service_client, arn, token)
       
       elif step == "testSecret":
           test_secret(service_client, arn, token)
           
       elif step == "finishSecret":
           finish_secret(service_client, arn, token)
           
       else:
           raise ValueError("Invalid step parameter")
   ```

1. Edit `create_secret` kode

   Merevisi `create_secret` fungsi untuk menerima dan menggunakan `rotation_token` parameter:

   ```
   # Add rotation_token to the function
   def create_secret(service_client, arn, token, rotation_token):
   """Create the secret
   
   This method first checks for the existence of a secret for the passed in token. If one does not exist, it will generate a
   new secret and put it with the passed in token.
   
   Args:
   service_client (client): The secrets manager service client
   
   arn (string): The secret ARN or other identifier
   
   token (string): The ClientRequestToken associated with the secret version
   
   rotation_token (string): the rotation token to put as parameter for PutSecretValue call
   
   Raises:
   ResourceNotFoundException: If the secret with the specified arn and stage does not exist
   
   """
   # Make sure the current secret exists
   service_client.get_secret_value(SecretId=arn, VersionStage="AWSCURRENT")
   
   # Now try to get the secret version, if that fails, put a new secret
   try:
   service_client.get_secret_value(SecretId=arn, VersionId=token, VersionStage="AWSPENDING")
   logger.info("createSecret: Successfully retrieved secret for %s." % arn)
   except service_client.exceptions.ResourceNotFoundException:
   # Get exclude characters from environment variable
   exclude_characters = os.environ['EXCLUDE_CHARACTERS'] if 'EXCLUDE_CHARACTERS' in os.environ else '/@"\'\\'
   # Generate a random password
   passwd = service_client.get_random_password(ExcludeCharacters=exclude_characters)
   
   # Put the secret, using rotation_token
   service_client.put_secret_value(SecretId=arn, ClientRequestToken=token, SecretString=passwd['RandomPassword'], VersionStages=['AWSPENDING'], RotationToken=rotation_token)
   logger.info("createSecret: Successfully put secret for ARN %s and version %s." % (arn, token))
   ```

1. Unggah kode fungsi Lambda yang diperbarui

   Setelah memperbarui kode fungsi Lambda Anda, [unggah untuk memutar rahasia Anda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-zip.html#configuration-function-update).

## Kesalahan: “Kesalahan saat menjalankan lambda *<arn>* selama *<a rotation>* langkah”
<a name="concurrency-related-failures"></a>

Jika Anda mengalami kegagalan rotasi rahasia intermiten dengan fungsi Lambda Anda macet dalam satu lingkaran set, misalnya antara **CreateSecret** dan**SetSecret**, masalahnya mungkin terkait dengan pengaturan konkurensi.

### Langkah pemecahan masalah konkurensi
<a name="concurrency-troubleshooting-steps"></a>

**Awas**  
Menyetel parameter konkurensi yang disediakan ke nilai yang lebih rendah dari 10 dapat menyebabkan pelambatan karena utas eksekusi yang tidak mencukupi untuk fungsi Lambda. Untuk informasi selengkapnya, lihat [Memahami konkurensi cadangan dan konkurensi yang disediakan di Panduan Pengembang](https://docs.aws.amazon.com/lambda/latest/dg/lambda-concurrency.html#reserved-and-provisioned). AWS Lambda AWS Lambda 

1. Periksa dan sesuaikan pengaturan konkurensi Lambda:
   + Verifikasi `reserved_concurrent_executions` bahwa tidak disetel terlalu rendah (misalnya, 1)
   + Jika menggunakan konkurensi cadangan, setel ke setidaknya 10
   + Pertimbangkan untuk menggunakan konkurensi tanpa syarat untuk lebih banyak fleksibilitas

1. Untuk konkurensi yang disediakan:
   + Jangan setel parameter konkurensi yang disediakan secara eksplisit (misalnya, di Terraform).
   + Jika Anda harus mengaturnya, gunakan nilai minimal 10.
   + Uji secara menyeluruh untuk memastikan nilai yang dipilih berfungsi untuk kasus penggunaan Anda.

1. Pantau dan sesuaikan konkurensi:
   + Hitung konkurensi menggunakan rumus ini: Concurrency = (permintaan rata-rata per detik) \$1 (durasi permintaan rata-rata dalam detik). Untuk informasi selengkapnya, lihat [Memperkirakan konkurensi cadangan](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html#estimating-reserved-concurrency).
   + Amati dan catat nilai selama rotasi untuk menentukan pengaturan konkurensi yang sesuai.
   + Hati-hati saat menetapkan nilai konkurensi rendah. Mereka dapat menyebabkan pelambatan jika tidak ada cukup utas eksekusi yang tersedia.

Untuk informasi selengkapnya tentang mengonfigurasi konkurensi Lambda, [lihat Mengonfigurasi konkurensi cadangan dan Mengonfigurasi konkurensi yang disediakan](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html) [di Panduan Pengembang.](https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html) AWS Lambda 