

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Rotazione tramite funzione Lambda
<a name="rotate-secrets_lambda"></a>

Per molti tipi di segreti, Secrets Manager utilizza una AWS Lambda funzione per aggiornare il segreto e il database o il servizio. Per ulteriori informazioni sui costi di utilizzo della funzione Lambda, consulta la sezione [Prezzi](intro.md#asm_pricing).

Per alcuni [Segreti gestiti da altri servizi](service-linked-secrets.md), si utilizza la *rotazione gestita*. Per utilizzare [Rotazione gestita](rotate-secrets_managed.md), è necessario dapprima creare il segreto tramite il servizio di gestione.

Durante la rotazione, Secrets Manager registra gli eventi che indicano lo stato della rotazione. Per ulteriori informazioni, consulta [Registra Gestione dei segreti AWS gli eventi con AWS CloudTrail](monitoring-cloudtrail.md).

Per ruotare un segreto, Secrets Manager chiama una funzione [Lambda](rotate-secrets_lambda-functions.md) in base alla pianificazione di rotazione impostata. Se aggiorni anche manualmente il valore segreto mentre è impostata la rotazione automatica, Secrets Manager la considera una rotazione valida quando calcola la data di rotazione successiva. 

Durante la rotazione, Secrets Manager chiama la stessa funzione diverse volte, ogni volta con parametri diversi. Secrets Manager richiama la funzione con la struttura di parametri di richiesta JSON seguenti: 

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

**Parametri:**
+ **Fase**: la fase di rotazione:`create_secret`, `set_secret``test_secret`, o. `finish_secret` Per ulteriori informazioni, consulta [Quattro fasi in una funzione di rotazione](rotate-secrets_lambda-functions.md#rotate-secrets_lambda-functions-code).
+ **SecretId**— L'ARN del segreto per ruotare.
+ **ClientRequestToken**— Un identificatore univoco per la nuova versione del segreto. Questo valore aiuta a garantire l'idempotenza. *Per ulteriori informazioni, consulta [PutSecretValue: ClientRequestToken](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html#SecretsManager-PutSecretValue-request-ClientRequestToken) nel riferimento alle Gestione dei segreti AWS API.*
+ **RotationToken**— Un identificatore univoco che indica l'origine della richiesta. Richiesto per la rotazione segreta utilizzando un ruolo presunto o una rotazione tra account, in cui si ruota un segreto in un account utilizzando una funzione di rotazione Lambda in un altro account. In entrambi i casi, la funzione di rotazione assume un ruolo IAM per chiamare Secrets Manager, quindi Secrets Manager utilizza il token di rotazione per convalidare l'identità del ruolo IAM. 

Se una qualsiasi fase di rotazione fallisce, Secrets Manager riprova l'intero processo di rotazione più volte.

**Topics**
+ [Rotazione automatica per i segreti del database (console)](rotate-secrets_turn-on-for-db.md)
+ [Rotazione automatica per i segreti non relativi al database (console)](rotate-secrets_turn-on-for-other.md)
+ [Rotazione automatica (AWS CLI)](rotate-secrets_turn-on-cli.md)
+ [

# Strategie di rotazione delle funzioni Lambda
](rotation-strategy.md)
+ [

# Funzioni di rotazione Lambda
](rotate-secrets_lambda-functions.md)
+ [Modelli di funzione di rotazione](reference_available-rotation-templates.md)
+ [Autorizzazioni per la rotazione](rotating-secrets-required-permissions-function.md)
+ [

# Accesso alla rete per la funzione AWS Lambda di rotazione
](rotation-function-network-access.md)
+ [Risoluzione dei problemi della rotazione](troubleshoot_rotation.md)

# Configura la rotazione automatica per i segreti di Amazon RDS, Amazon Aurora, Amazon Redshift o Amazon DocumentDB
<a name="rotate-secrets_turn-on-for-db"></a>

Questo tutorial descrive come configurare i segreti [Rotazione tramite funzione Lambda](rotate-secrets_lambda.md) del database. La rotazione è il processo di aggiornamento periodico di un segreto. Quando si ruota un segreto, vengono aggiornate le credenziali sia nel segreto che nel database. In Gestione dei segreti, puoi impostare la rotazione automatica per i segreti del tuo database.

Per impostare la rotazione utilizzando la console, prima è necessario scegliere una strategia di rotazione. Poi è possibile configurare il segreto per la rotazione, creando una funzione di rotazione Lambda se non è già presente. La console imposta anche le autorizzazioni per il ruolo di esecuzione della funzione Lambda. L'ultimo passaggio consiste nel garantire che la funzione di rotazione Lambda possa accedere sia a Gestione dei segreti che al database tramite la rete.

**avvertimento**  
Per attivare la rotazione automatica, devi disporre dell'autorizzazione per creare un ruolo di esecuzione IAM per la funzione di rotazione Lambda e allegare una politica di autorizzazione. Sono necessarie entrambe le autorizzazioni `iam:CreateRole` e `iam:AttachRolePolicy`. La concessione di queste autorizzazioni consente a un'identità di concedersi qualsiasi autorizzazione.

**Topics**
+ [

## Fase 1: Scelta di una strategia di rotazione e (facoltativamente) creazione di un segreto del superutente
](#rotate-secrets_turn-on-for-db_step1)
+ [

## Fase 2: Configurazione della rotazione e creazione di una funzione di rotazione
](#rotate-secrets_turn-on-for-db_step2)
+ [

## Passaggio 3: (facoltativo) impostazione di condizioni di autorizzazione aggiuntive sulla funzione di rotazione
](#rotate-secrets_turn-on-for-db_step3)
+ [

## Fase 4: Configurazione dell'accesso alla rete per la funzione di rotazione
](#rotate-secrets_turn-on-for-db_step4)
+ [

## Fasi successive
](#rotate-secrets_turn-on-for-db_stepnext)

## Fase 1: Scelta di una strategia di rotazione e (facoltativamente) creazione di un segreto del superutente
<a name="rotate-secrets_turn-on-for-db_step1"></a>

Per informazioni sulle strategie offerte da Secrets Manager, vedere[Strategie di rotazione delle funzioni Lambda](rotation-strategy.md).

Se scegli la *strategia a utenti alternati*, è necessario [Crea segreti](create_secret.md) e memorizzare al suo interno le credenziali del superutente del database. Con le credenziali di superutente è necessario un segreto perché la rotazione clona il primo utente e la maggior parte degli utenti non dispone di tale autorizzazione. Tieni presente che Amazon RDS Proxy non supporta la strategia di utenti alternati.

## Fase 2: Configurazione della rotazione e creazione di una funzione di rotazione
<a name="rotate-secrets_turn-on-for-db_step2"></a>

**Per attivare la rotazione per un segreto Amazon RDS, Amazon DocumentDB o Amazon Redshift**

1. Apri la console Secrets Manager all'indirizzo [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Nella pagina dell'elenco **Secrets (Segreti)** scegli il segreto.

1. Nella pagina **Secret details (Dettagli del segreto)**, nella sezione **Rotation configuration (Configurazione rotazione)** scegli **Edit rotation (Modifica rotazione)**.

1. Nella finestra di dialogo **Edit rotation configuration (modifica configurazione rotazione)**, procedi come indicato di seguito:

   1. Attiva **Automatic rotation** (Rotazione automatica).

   1. In **Rotation schedule** (Pianificazione della rotazione), inserisci la tua pianificazione seguendo il fuso orario UTC nel **Schedule expression builder** (Generatore di espressioni di pianificazione) o come **Schedule expression** (Espressione di pianificazione). Gestione dei segreti memorizza la tua pianificazione come un'espressione `rate()` o `cron()`. La finestra di rotazione inizia automaticamente a mezzanotte, a meno che non si specifichi un'**ora di inizio**. Puoi ruotare un segreto anche ogni quattro ore. Per ulteriori informazioni, consulta [Pianificazioni di rotazione](rotate-secrets_schedule.md).

   1. (Facoltativo) Per **Window duration** (Durata della finestra), scegli la lunghezza della finestra durante la quale vuoi che Secrets Manager ruoti il tuo segreto, ad esempio **3h** per una finestra di tre ore. La finestra non deve continuare nella finestra di rotazione successiva. Se non si specifica la **durata della finestra**, per un programma di rotazione espresso in ore, la finestra si chiude automaticamente dopo un'ora. Per un programma di rotazione espresso in giorni, la finestra si chiude automaticamente alla fine della giornata. 

   1. (Facoltativo) Scegli **Rotate immediately when the secret is stored** (Ruota immediatamente quando viene memorizzato il segreto) per ruotare il segreto al salvataggio delle modifiche. Deselezionando la casella di controllo, la prima rotazione inizierà nella pianificazione impostata.

      Se la rotazione non avviene, ad esempio perché le fasi 3 e 4 non sono ancora state completate, Gestione dei segreti riprova il processo di rotazione più volte.

   1. In **Rotation function** (Funzione di rotazione), esegui una delle seguenti operazioni:
      + Scegli **Crea una nuova funzione Lambda** e immetti un nome per la nuova funzione. Gestione dei segreti aggiunge "`SecretsManager`" all'inizio del nome della funzione. Gestione dei segreti crea la funzione in base al [modello](reference_available-rotation-templates.md) appropriato e imposta le [autorizzazioni](rotating-secrets-required-permissions-function.md) necessarie per il ruolo di esecuzione di Lambda.
      + Scegli **Use an existing Lambda function** (Usa una funzione Lambda esistente) per riutilizzare una funzione di rotazione Lambda esistente per un altro segreto. Le funzioni di rotazione elencate in **Recommended VPC configurations** (Configurazioni VPC consigliate) dispongono dello stesso VPC e gruppo di sicurezza del database, e questo aiuta la funzione ad accedere al database.

   1. Per **Strategia di rotazione** scegli la strategia **Utente singolo** o **Utenti alternati**. Per ulteriori informazioni, consulta [Fase 1: Scelta di una strategia di rotazione e (facoltativamente) creazione di un segreto del superutente](#rotate-secrets_turn-on-for-db_step1).

1. Scegli **Save** (Salva).

## Passaggio 3: (facoltativo) impostazione di condizioni di autorizzazione aggiuntive sulla funzione di rotazione
<a name="rotate-secrets_turn-on-for-db_step3"></a>

Nella policy delle risorse per la funzione di rotazione, si consiglia di includere la chiave di contesto [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) per prevenire che Lambda venga usato come [confused deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Per alcuni AWS servizi, per evitare il confuso scenario sostitutivo, si AWS consiglia di utilizzare sia i tasti di condizione [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)globale che i [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)tasti di condizione globale. Tuttavia, se includi la condizione `aws:SourceArn` nella tua policy della funzione di rotazione, la funzione di rotazione può essere utilizzata solo per ruotare il segreto specificato da tale ARN. Ti consigliamo di includere solo la chiave di contesto `aws:SourceAccount` in modo da poter utilizzare la funzione di rotazione per più segreti. 

**Per aggiornare la policy delle risorse della funzione di rotazione**

1. Nella console Gestione dei segreti, scegli il tuo segreto e quindi nella pagina dei dettagli, nella sezione **Rotation configuration** (Configurazione della rotazione), scegli la funzione di rotazione Lambda. Si apre la console Lambda.

1. Segui le istruzioni in [Utilizzo di politiche basate sulle risorse per Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) per aggiungere una condizione `aws:sourceAccount`.

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

Se il segreto è crittografato con una chiave KMS diversa da Chiave gestita da AWS `aws/secretsmanager`, Secrets Manager concede al ruolo di esecuzione Lambda l'autorizzazione a utilizzare la chiave. È possibile utilizzare il [contesto di crittografia SecretARN](security-encryption.md#security-encryption-encryption-context) per limitare l'uso della funzione di decrittografia, in modo che il ruolo della funzione di rotazione sia autorizzato ad accedere soltanto per decrittografare il segreto della cui rotazione è responsabile.

**Aggiornamento del ruolo di esecuzione della funzione di rotazione**

1. Dalla funzione di rotazione Lambda, scegli **Configurazione**, quindi in **Ruolo di esecuzione** scegli **Nome del ruolo**. 

1. Segui le istruzioni riportate nella sezione [Modifica di una policy sulle autorizzazioni dei ruoli](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy) per aggiungere una condizione `kms:EncryptionContext:SecretARN`.

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

## Fase 4: Configurazione dell'accesso alla rete per la funzione di rotazione
<a name="rotate-secrets_turn-on-for-db_step4"></a>

Per ulteriori informazioni, consulta [Accesso alla rete per la funzione AWS Lambda di rotazione](rotation-function-network-access.md).

## Fasi successive
<a name="rotate-secrets_turn-on-for-db_stepnext"></a>

Per informazioni, consulta [Risolvi i problemi Gestione dei segreti AWS di rotazione](troubleshoot_rotation.md).

# Imposta la rotazione automatica per i segreti non relativi al database Gestione dei segreti AWS
<a name="rotate-secrets_turn-on-for-other"></a>

Questo tutorial descrive come configurare i segreti non relativi [Rotazione tramite funzione Lambda](rotate-secrets_lambda.md) al database. La rotazione è il processo di aggiornamento periodico di un segreto. Quando ruoti un segreto, aggiorni le credenziali sia nel segreto che nel database o nel servizio a cui si riferisce il segreto.

Per informazioni segrete sul database, consulta [Rotazione automatica per i segreti del database (console)](rotate-secrets_turn-on-for-db.md).

**avvertimento**  
Per attivare la rotazione automatica, devi disporre dell'autorizzazione per creare un ruolo di esecuzione IAM per la funzione di rotazione Lambda e allegare una politica di autorizzazione. Sono necessarie entrambe le autorizzazioni `iam:CreateRole` e `iam:AttachRolePolicy`. La concessione di queste autorizzazioni consente a un'identità di concedersi qualsiasi autorizzazione.

**Topics**
+ [

## Fase 1: Creare una funzione di rotazione generica
](#rotate-secrets_turn-on-for-other_create)
+ [

## Fase 2: Scrittura del codice della funzione di rotazione
](#rotate-secrets_turn-on-for-other_write)
+ [

## Fase 3: Configurare il segreto per la rotazione
](#rotate-secrets_turn-on-for-other_configure)
+ [

## Passaggio 4: consentire alla funzione di rotazione di accedere a Secrets Manager e al database o al servizio
](#rotate-secrets_turn-on-for-other_perms)
+ [

## Passaggio 5: consentire a Secrets Manager di richiamare la funzione di rotazione
](#rotate-secrets_turn-on-for-other_perms2)
+ [

## Fase 6: Configurare l'accesso alla rete per la funzione di rotazione
](#rotate-secrets_turn-on-for-other_network)
+ [

## Fasi successive
](#rotate-secrets_turn-on-for-other_stepnext)

## Fase 1: Creare una funzione di rotazione generica
<a name="rotate-secrets_turn-on-for-other_create"></a>

Per iniziare, crea una funzione di rotazione Lambda. Non conterrà il codice per ruotare il tuo segreto, quindi lo scriverai in un passaggio successivo. Per informazioni su come funziona una funzione di rotazione, consulta[Funzioni di rotazione Lambda](rotate-secrets_lambda-functions.md).

Nelle regioni supportate, è possibile utilizzare AWS Serverless Application Repository per creare la funzione da un modello. Per un elenco delle regioni supportate, consulta [AWS Serverless Application Repository FAQs](https://aws.amazon.com/serverless/serverlessrepo/faqs/). In altre regioni, si crea la funzione da zero e si copia il codice del modello nella funzione.

**Per creare una funzione di rotazione generica**

1. Per determinare se AWS Serverless Application Repository è supportata nella tua regione, consulta gli [AWS Serverless Application Repository endpoint e le quote](https://docs.aws.amazon.com/general/latest/gr/serverlessrepo.html) nel Riferimento *AWS generale*. 

1. Esegui una delle seguenti operazioni:
   + Se AWS Serverless Application Repository è supportato nella tua regione:

     1. Nella console Lambda, scegli **Applicazioni**, quindi scegli **Crea** applicazione.

     1. Nella pagina **Crea applicazione**, scegli la scheda **Applicazione Serverless**.

     1. Nella casella di ricerca in **Applicazioni pubbliche**, inserisci**SecretsManagerRotationTemplate**.

     1. Seleziona **Mostra app che creano ruoli IAM personalizzati o politiche di risorse**.

     1. Seleziona in riquadro **SecretsManagerRotationTemplate**.

     1. Nella pagina **Rivedi, configura e distribuisci**, nel riquadro **Impostazioni dell'applicazione**, compila i campi obbligatori. 
        + Per **endpoint**, inserisci l'endpoint per la tua regione, incluso. **https://** Per un elenco di endpoint, consulta [Gestione dei segreti AWS endpoint](asm_access.md#endpoints).
        + **Per inserire la funzione Lambda in un VPC, includi ID e. vpcSecurityGroup **vpcSubnetIds****

     1. Seleziona **Implementa**.
   + Se AWS Serverless Application Repository non è supportata nella tua regione:

     1. Nella console Lambda, scegli **Funzioni**, quindi scegli **Crea** funzione.

     1. Nella pagina **Create function (Crea funzione)**, procedere come segue:

        1. Scegli **Author from scratch** (Crea da zero).

        1. In **Function name** (Nome funzione), inserisci un nome per la funzione di rotazione.

        1. Per **Runtime**, scegli **Python 3.10**.

        1. Scegli **Crea funzione**.

## Fase 2: Scrittura del codice della funzione di rotazione
<a name="rotate-secrets_turn-on-for-other_write"></a>

In questo passaggio, scrivi il codice che aggiorna il segreto e il servizio o il database a cui è destinato il segreto. Per informazioni sul funzionamento di una funzione di rotazione, inclusi suggerimenti su come scrivere una funzione di rotazione personalizzata, vedere[Funzioni di rotazione Lambda](rotate-secrets_lambda-functions.md). È inoltre possibile utilizzarla [Modelli di funzione di rotazione](reference_available-rotation-templates.md) come riferimento.

## Fase 3: Configurare il segreto per la rotazione
<a name="rotate-secrets_turn-on-for-other_configure"></a>

In questo passaggio, imposti un programma di rotazione per il tuo segreto e connetti la funzione di rotazione al segreto. 

**Per configurare la rotazione e creare una funzione di rotazione vuota**

1. Apri la console Secrets Manager all'indirizzo [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Nella pagina dell'elenco **Secrets (Segreti)** scegli il segreto.

1. Nella pagina **Secret details (Dettagli del segreto)**, nella sezione **Rotation configuration (Configurazione rotazione)** scegli **Edit rotation (Modifica rotazione)**. Nella finestra di dialogo **Edit rotation configuration (modifica configurazione rotazione)**, procedi come indicato di seguito:

   1. Attiva **Automatic rotation** (Rotazione automatica).

   1. In **Rotation schedule** (Pianificazione della rotazione), inserisci la tua pianificazione seguendo il fuso orario UTC nel **Schedule expression builder** (Generatore di espressioni di pianificazione) o come **Schedule expression** (Espressione di pianificazione). Gestione dei segreti memorizza la tua pianificazione come un'espressione `rate()` o `cron()`. La finestra di rotazione inizia automaticamente a mezzanotte, a meno che non si specifichi un'**ora di inizio**. Puoi ruotare un segreto anche ogni quattro ore. Per ulteriori informazioni, consulta [Pianificazioni di rotazione](rotate-secrets_schedule.md).

   1. (Facoltativo) Per **Window duration** (Durata della finestra), scegli la lunghezza della finestra durante la quale vuoi che Secrets Manager ruoti il tuo segreto, ad esempio **3h** per una finestra di tre ore. La finestra non deve continuare nella finestra di rotazione successiva. Se non si specifica la **durata della finestra**, per un programma di rotazione espresso in ore, la finestra si chiude automaticamente dopo un'ora. Per un programma di rotazione espresso in giorni, la finestra si chiude automaticamente alla fine della giornata. 

   1. (Facoltativo) Scegli **Rotate immediately when the secret is stored** (Ruota immediatamente quando viene memorizzato il segreto) per ruotare il segreto al salvataggio delle modifiche. Deselezionando la casella di controllo, la prima rotazione inizierà nella pianificazione impostata.

   1. In **Funzione di rotazione**, scegli la funzione Lambda che hai creato nel passaggio 1.

   1. Scegli **Save** (Salva).

## Passaggio 4: consentire alla funzione di rotazione di accedere a Secrets Manager e al database o al servizio
<a name="rotate-secrets_turn-on-for-other_perms"></a>

La funzione di rotazione Lambda richiede l'autorizzazione per accedere al segreto in Gestione dei segreti e necessita dell'autorizzazione per accedere al database o al servizio. In questo passaggio, concedi queste autorizzazioni al ruolo di esecuzione di Lambda. Se il segreto è crittografato con una chiave KMS diversa da Chiave gestita da AWS `aws/secretsmanager`, allora è necessario concedere l'autorizzazione per utilizzare la chiave al ruolo di esecuzione Lambda. È possibile utilizzare il [contesto di crittografia SecretARN](security-encryption.md#security-encryption-encryption-context) per limitare l'uso della funzione di decrittografia, in modo che il ruolo della funzione di rotazione sia autorizzato ad accedere soltanto per decrittografare il segreto della cui rotazione è responsabile. Per esempi di policy, consulta [Autorizzazioni per la rotazione](rotating-secrets-required-permissions-function.md).

Per istruzioni, consulta [Ruolo di esecuzione di Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) nella *Guida per gli sviluppatori di AWS Lambda *.

## Passaggio 5: consentire a Secrets Manager di richiamare la funzione di rotazione
<a name="rotate-secrets_turn-on-for-other_perms2"></a>

Per consentire a Secrets Manager di richiamare la funzione di rotazione nella pianificazione di rotazione impostata, è necessario concedere l'`lambda:InvokeFunction`autorizzazione al responsabile del servizio Secrets Manager nella politica delle risorse della funzione Lambda.

Nella policy delle risorse per la funzione di rotazione, si consiglia di includere la chiave di contesto [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) per prevenire che Lambda venga usato come [confused deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Per alcuni AWS servizi, per evitare il confuso scenario sostitutivo, si AWS consiglia di utilizzare sia i tasti di condizione [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)sia i tasti di condizione [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)globali. Tuttavia, se includi la condizione `aws:SourceArn` nella tua policy della funzione di rotazione, la funzione di rotazione può essere utilizzata solo per ruotare il segreto specificato da tale ARN. Ti consigliamo di includere solo la chiave di contesto `aws:SourceAccount` in modo da poter utilizzare la funzione di rotazione per più segreti. 

Per collegare una policy sulle risorse a una funzione Lambda, consulta [Utilizzo delle policy basate su risorse per Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html).

La seguente politica consente a Secrets Manager di richiamare una funzione 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"
    }
    ]
}
```

------

## Fase 6: Configurare l'accesso alla rete per la funzione di rotazione
<a name="rotate-secrets_turn-on-for-other_network"></a>

In questo passaggio, consenti alla funzione di rotazione di connettersi sia a Secrets Manager che al servizio o al database a cui è destinato il segreto. La funzione di rotazione deve avere accesso a entrambi per poter ruotare il segreto. Per informazioni, consulta [Accesso alla rete per la funzione AWS Lambda di rotazione](rotation-function-network-access.md).

## Fasi successive
<a name="rotate-secrets_turn-on-for-other_stepnext"></a>

Quando hai configurato la rotazione nel Passaggio 3, hai impostato una pianificazione per la rotazione del segreto. Se la rotazione fallisce quando è pianificata, Secrets Manager tenterà la rotazione più volte. È inoltre possibile avviare immediatamente una rotazione seguendo le istruzioni riportate in[Rotazione immediata di un segreto](rotate-secrets_now.md).

Se la rotazione fallisce, vedi[Risoluzione dei problemi della rotazione](troubleshoot_rotation.md).

# Imposta la rotazione automatica utilizzando il AWS CLI
<a name="rotate-secrets_turn-on-cli"></a>

Questo tutorial descrive come eseguire la configurazione [Rotazione tramite funzione Lambda](rotate-secrets_lambda.md) utilizzando AWS CLI. Quando ruoti un segreto, aggiorni le credenziali sia nel segreto che nel database o nel servizio a cui si riferisce il segreto. 

Puoi anche impostare la rotazione utilizzando la console. Per informazioni segrete sul database, consulta [Rotazione automatica per i segreti del database (console)](rotate-secrets_turn-on-for-db.md). Per altri tipi di segreti, consulta la sezione [Rotazione automatica per i segreti non relativi al database (console)](rotate-secrets_turn-on-for-other.md).

Per impostare la rotazione utilizzando AWS CLI, se si sta ruotando un database segreto, è necessario innanzitutto scegliere una strategia di rotazione. Se scegli la strategia a utenti alternati, è necessario archiviare un segreto separato con credenziali per un superutente del database. A questo punto, puoi scrivere il codice della funzione di rotazione. Gestione dei segreti fornisce modelli su cui puoi basare la funzione. Quindi, crei una funzione Lambda con il tuo codice e imposti le autorizzazioni sia per la funzione Lambda che per il ruolo di esecuzione Lambda. Il passaggio successivo consiste nell'assicurarsi che la funzione Lambda possa accedere sia a Secrets Manager che al database o al servizio tramite la rete. Infine, puoi configurare il segreto per la rotazione.

**Topics**
+ [

## Prerequisito per i segreti del database: scegliere una strategia di rotazione
](#rotate-secrets_turn-on-cli_step1)
+ [

## Fase 1: scrivere il codice della funzione di rotazione
](#rotate-secrets_turn-on-cli_write)
+ [

## Fase 2: Creare la funzione Lambda
](#w2aac21c11c25c15)
+ [

## Passaggio 3: configurare l'accesso alla rete
](#w2aac21c11c25c17)
+ [

## Fase 4: Configurare il segreto per la rotazione
](#w2aac21c11c25c19)
+ [

## Fasi successive
](#w2aac21c11c25c21)

## Prerequisito per i segreti del database: scegliere una strategia di rotazione
<a name="rotate-secrets_turn-on-cli_step1"></a>

Per informazioni sulle strategie offerte da Secrets Manager, vedere[Strategie di rotazione delle funzioni Lambda](rotation-strategy.md).

### Opzione 1: strategia per utente singolo
<a name="w2aac21c11c25c11b5"></a>

Se scegli la *strategia per utente singolo*, puoi continuare con la Fase 1. 

### Opzione 2: strategia per utenti alternati
<a name="w2aac21c11c25c11b7"></a>

Se scegli la *strategia per utenti alternati*, devi:
+ [Crea un segreto](create_secret.md#create_secret_cli) e memorizza le credenziali di superutente del database al suo interno. È necessario un segreto con credenziali di superutente perché la rotazione alternata degli utenti clona il primo utente e la maggior parte degli utenti non dispone di tale autorizzazione. 
+ Aggiungi l'ARN del segreto del superutente al segreto originale. Per ulteriori informazioni, consulta [Struttura dei segreti JSON Gestione dei segreti AWS](reference_secret_json_structure.md). 

Tieni presente che Amazon RDS Proxy non supporta la strategia di utenti alternati.

## Fase 1: scrivere il codice della funzione di rotazione
<a name="rotate-secrets_turn-on-cli_write"></a>

Per ruotare un segreto, hai bisogno di una funzione di rotazione. Una funzione di rotazione è una funzione Lambda chiamata da Gestione dei segreti per ruotare il tuo segreto. Per ulteriori informazioni, consulta [Rotazione tramite funzione Lambda](rotate-secrets_lambda.md). In questo passaggio, scrivi il codice che aggiorna il segreto e il servizio o il database a cui è destinato il segreto.

Secrets Manager fornisce modelli per i segreti dei database Amazon RDS, Amazon Aurora, Amazon Redshift e Amazon DocumentDB. [Modelli di funzione di rotazione](reference_available-rotation-templates.md) 

**Per scrivere il codice della funzione di rotazione**

1. Esegui una delle seguenti operazioni:
   + Controlla l'elenco dei [modelli delle funzioni di rotazione](reference_available-rotation-templates.md). Se ce n'è uno che corrisponde al tuo servizio e alla tua strategia di rotazione, copia il codice. 
   + Per altri tipi di segreti, scrivi la tua funzione di rotazione. Per istruzioni, consulta [Funzioni di rotazione Lambda](rotate-secrets_lambda-functions.md). 

1. Salva il file in un file ZIP *my-function.zip* insieme a tutte le dipendenze richieste.

## Fase 2: Creare la funzione Lambda
<a name="w2aac21c11c25c15"></a>

In questo passaggio, si crea la funzione Lambda utilizzando il file ZIP creato nel passaggio 1. È inoltre possibile impostare il [ruolo di esecuzione Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html), che è il ruolo che Lambda assume quando viene richiamata la funzione.

**Creazione di una funzione di rotazione Lambda e di un ruolo di esecuzione**

1. Crea una policy di attendibilità per il ruolo di esecuzione Lambda e salvalo come file JSON. Per esempi e maggiori informazioni, consulta [Autorizzazioni del ruolo di esecuzione della funzione di rotazione Lambda per Gestione dei segreti AWS](rotating-secrets-required-permissions-function.md). La policy deve:
   + Consentire al ruolo di chiamare le operazioni di Gestione dei segreti sul segreto. 
   + Consenti al ruolo di chiamare il servizio a cui è destinato il segreto, ad esempio per creare una nuova password. 

1. Crea il ruolo di esecuzione Lambda e applica la policy di fiducia creata nel passaggio precedente chiamando. [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. Crea la funzione Lambda dal file ZIP chiamando [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. Imposta una policy delle risorse sulla funzione Lambda per consentire a Gestione dei segreti di richiamarla effettuando una chiamata [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
   ```

## Passaggio 3: configurare l'accesso alla rete
<a name="w2aac21c11c25c17"></a>

Per ulteriori informazioni, consulta [Accesso alla rete per la funzione AWS Lambda di rotazione](rotation-function-network-access.md).

## Fase 4: Configurare il segreto per la rotazione
<a name="w2aac21c11c25c19"></a>

Per attivare la rotazione automatica del segreto, chiama [https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/rotate-secret.html](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/rotate-secret.html). Puoi impostare una pianificazione di rotazione con un'espressione di pianificazione `cron()` o `rate()` e impostare una durata della finestra di rotazione. Per ulteriori informazioni, consulta [Pianificazioni di rotazione](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\"}"
```

## Fasi successive
<a name="w2aac21c11c25c21"></a>

Per informazioni, consulta [Risolvi i problemi Gestione dei segreti AWS di rotazione](troubleshoot_rotation.md).

# Strategie di rotazione delle funzioni Lambda
<a name="rotation-strategy"></a>

Infatti[Rotazione tramite funzione Lambda](rotate-secrets_lambda.md), per quanto riguarda i segreti del database, Secrets Manager offre due strategie di rotazione.

## Strategia di rotazione a utente singolo
<a name="rotating-secrets-one-user-one-password"></a>

Questa strategia aggiorna le credenziali per un utente in un unico segreto. Poiché gli utenti non possono modificare le proprie password, per le istanze Amazon RDS Db2 è necessario fornire le credenziali di amministratore in un segreto separato. **Questa è la strategia di rotazione più semplice ed è adatta alla maggior parte dei casi d'uso.** In particolare, ti consigliamo di utilizzare questa strategia per le credenziali per utenti occasionali (ad hoc) o interattivi.

Quando il segreto ruota, le connessioni aperte al database non vengono eliminate. Mentre si verifica la rotazione, tra la modifica della password nel database e l'aggiornamento del segreto corrispondente passa un breve periodo di tempo. Durante questo periodo di tempo, c'è un basso rischio che il database neghi le chiamate che utilizzano le credenziali ruotate. È possibile mitigare questo rischio con una [strategia per nuovi tentativi appropriata](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/). Dopo la rotazione, le nuove connessioni utilizzano le nuove credenziali. 

## Strategia di rotazione a utenti alternati
<a name="rotating-secrets-two-users"></a>

Questa strategia aggiorna le credenziali per due utenti in un unico segreto. Viene creato il primo utente e, durante la prima rotazione, la funzione di rotazione lo clona creando il secondo. Ogni volta che il segreto ruota, la funzione di rotazione alterna quale password dell'utente viene aggiornata. Poiché la maggior parte degli utenti non dispone dell'autorizzazione per clonarsi, è necessario fornire le credenziali relative a un `superuser` in un altro segreto. Si consiglia di utilizzare la strategia di rotazione per singolo utente quando gli utenti clonati nel database non hanno le stesse autorizzazioni dell'utente originale e per le credenziali di utenti occasionali (ad hoc) o interattivi.

Questa strategia è adatta per i database con modelli di autorizzazione in cui un ruolo possiede le tabelle del database e un secondo ruolo ha l'autorizzazione per accedervi. È adatta anche all'uso in applicazioni che richiedono una disponibilità elevata. Se un'applicazione recupera il segreto durante la rotazione, ottiene comunque un set di credenziali valido. Dopo la rotazione, entrambe le credenziali `user` e `user_clone` sono valide. Ci sono anche meno possibilità che le applicazioni ottengano un rifiuto durante questo tipo di rotazione rispetto alla rotazione a utente singolo. Se il database è ospitato in una server farm dove la modifica della password richiede tempo per propagarsi a tutti i server, esiste il rischio che il database rifiuti le chiamate che utilizzano le nuove credenziali. È possibile mitigare questo rischio con una [strategia per nuovi tentativi appropriata](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/).

Secrets Manager crea l'utente clonato con le stesse autorizzazioni dell'utente originale. Se modifichi le autorizzazioni dell'utente originale dopo la creazione del clone, devi modificare anche le autorizzazioni dell'utente clonato.

Ad esempio, se crei un segreto con le credenziali di un utente del database, il segreto contiene una versione con tali credenziali.

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

**Prima rotazione**: la funzione di rotazione crea un clone dell'utente con una password generata e tali credenziali diventano la versione segreta corrente.

 ![\[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/it_it/secretsmanager/latest/userguide/images/AlternatingUsers2.png) 

**Seconda rotazione**: la funzione di rotazione aggiorna la password per l'utente originale.

 ![\[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/it_it/secretsmanager/latest/userguide/images/AlternatingUsers3.png) 

**Terza rotazione**: la funzione di rotazione aggiorna la password per l'utente clonato.

 ![\[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/it_it/secretsmanager/latest/userguide/images/AlternatingUsers4.png) 

# Funzioni di rotazione Lambda
<a name="rotate-secrets_lambda-functions"></a>

In[Rotazione tramite funzione Lambda](rotate-secrets_lambda.md), una AWS Lambda funzione ruota il segreto. Gestione dei segreti AWS utilizza [etichette temporanee](whats-in-a-secret.md) per identificare le versioni segrete durante la rotazione.

Se Gestione dei segreti AWS non fornisce un [modello di funzione di rotazione](reference_available-rotation-templates.md) per il tipo segreto, puoi creare una funzione di rotazione personalizzata. Segui queste linee guida quando scrivi la tua funzione di rotazione:

**Le migliori pratiche per le funzioni di rotazione personalizzate**
+ Usa il [modello di rotazione generico](reference_available-rotation-templates.md#OTHER_rotation_templates) come punto di partenza.
+ Fai attenzione con le istruzioni di debug o di registrazione. Possono scrivere informazioni su Amazon CloudWatch Logs. Assicurati che i log non contengano informazioni sensibili.

  Per esempi di istruzioni di registro, consulta il codice [Gestione dei segreti AWS modelli di funzioni di rotazione](reference_available-rotation-templates.md) sorgente.
+ Per motivi di sicurezza, consente Gestione dei segreti AWS solo a una funzione di rotazione Lambda di ruotare direttamente il segreto. La funzione di rotazione non può chiamare un'altra funzione Lambda per ruotare il segreto.
+ Per indicazioni sul debug, consulta [Testing and debugging serverless applications](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-test-and-debug.html).
+ Se utilizzi binari e librerie esterne, ad esempio per connetterti a una risorsa, sei responsabile dell'applicazione di patch e del loro aggiornamento.
+ Package della funzione di rotazione e di tutte le dipendenze in un file ZIP, ad esempio*my-function.zip*.

**avvertimento**  
L'impostazione del parametro di concorrenza assegnato su un valore inferiore a 10 può causare una limitazione a causa di thread di esecuzione insufficienti per la funzione Lambda. Per ulteriori informazioni, consulta [Understanding Reserved Concurrency e Provisioned Concurrency](https://docs.aws.amazon.com/lambda/latest/dg/lambda-concurrency.html#reserved-and-provisioned) nella Developer Guide. AWS Lambda AWS Lambda 

## Quattro fasi in una funzione di rotazione
<a name="rotate-secrets_lambda-functions-code"></a>

**Topics**
+ [

### `createSecret`: crea una nuova versione del segreto
](#w2aac21c11c29c11b5)
+ [

### **setSecret**: modifica le credenziali nel database o nel servizio
](#w2aac21c11c29c11b7)
+ [

### **testSecret**: prova la nuova versione segreta
](#w2aac21c11c29c11b9)
+ [

### **finishSecret**: Termina la rotazione
](#w2aac21c11c29c11c11)

### `createSecret`: crea una nuova versione del segreto
<a name="w2aac21c11c29c11b5"></a>

Il metodo verifica `createSecret` innanzitutto se esiste un segreto chiamando [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)con il pass-in`ClientRequestToken`. Se non c'è alcun segreto, crea un nuovo segreto con [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)e il token come. `VersionId` Quindi genera un nuovo valore segreto con [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). Successivamente chiama [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)per memorizzarlo con l'etichetta `AWSPENDING` di staging. La memorizzazione del nuovo valore del segreto in `AWSPENDING` aiuta a garantire l'idempotenza. Se per un motivo qualsiasi la rotazione non viene eseguita, puoi fare riferimento a quel valore del segreto nelle chiamate successive. Consulta [Come posso rendere idempotente la mia funzione Lambda](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-function-idempotent/).

**Suggerimenti per scrivere una funzione di rotazione personalizzata**
+ Assicurati che il nuovo valore segreto includa solo caratteri validi per il database o il servizio. Escludi i caratteri utilizzando il parametro `ExcludeCharacters`. 
+ Mentre testate la vostra funzione, utilizzate le fasi AWS CLI per vedere la versione: chiamate [https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html)e guardate`VersionIdsToStages`.
+ Per Amazon RDS MySQL, nella rotazione alternata degli utenti, Secrets Manager crea un utente clonato con un nome non più lungo di 16 caratteri. Puoi modificare la funzione di rotazione per consentire nomi utente più lunghi. La versione 5.7 e successive di MySQL supportano nomi utente fino a 32 caratteri, tuttavia Secrets Manager aggiunge "\$1clone" (sei caratteri) alla fine del nome utente, quindi è necessario mantenere il nome utente a un massimo di 26 caratteri.

### **setSecret**: modifica le credenziali nel database o nel servizio
<a name="w2aac21c11c29c11b7"></a>

Il metodo `setSecret` modifica la credenziale nel database o nel servizio in modo che corrisponda al nuovo valore segreto nella `AWSPENDING` versione del segreto. 

**Suggerimenti per scrivere una funzione di rotazione personalizzata**
+ Se passate istruzioni a un servizio che interpreta le istruzioni, ad esempio un database, utilizzate la parametrizzazione delle query. *Per ulteriori informazioni, vedere [Query Parameterization Cheat Sheet sul](https://cheatsheetseries.owasp.org/cheatsheets/Query_Parameterization_Cheat_Sheet.html) sito Web OWASP.*
+ La funzione di rotazione è un "privileged deputy" che ha l'autorizzazione ad accedere e modificare le credenziali del cliente sia nel segreto di Gestione dei segreti che nella risorsa di destinazione. Per evitare un potenziale [attacco confused deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), devi assicurarti che un utente malintenzionato non possa utilizzare la funzione per accedere ad altre risorse. Prima di aggiornare le credenziali:
  + Verifica che la credenziale nella versione `AWSCURRENT` del segreto sia valida. Se la credenziale `AWSCURRENT` non è valida, abbandona il tentativo di rotazione.
  + Verifica che i valori dei segreti `AWSCURRENT` e `AWSPENDING` si riferiscano alla stessa risorsa. Per il nome utente e la password, verifica che i nomi utente `AWSCURRENT` e `AWSPENDING` siano uguali. 
  + Verifica che la risorsa del servizio di destinazione sia la stessa. Per un database, verifica che i nomi degli host `AWSCURRENT` e `AWSPENDING` siano uguali.
+ In rari casi, potresti voler personalizzare una funzione di rotazione esistente per un database. Ad esempio, con la rotazione alternata degli utenti, Secrets Manager crea l'utente clonato copiando [i parametri di configurazione di runtime](https://www.postgresql.org/docs/8.0/runtime-config.html) del primo utente. Se desideri includere più attributi o modificare quelli concessi all'utente clonato, devi aggiornare il codice nella funzione `set_secret`. 

### **testSecret**: prova la nuova versione segreta
<a name="w2aac21c11c29c11b9"></a>

Successivamente, la funzione di rotazione Lambda esegue il test della versione `AWSPENDING` del segreto utilizzando questa versione per accedere al database o al servizio. Le funzioni di rotazione basate su [Modelli di funzione di rotazione](reference_available-rotation-templates.md) verificano il nuovo segreto utilizzando un accesso in lettura. 

### **finishSecret**: Termina la rotazione
<a name="w2aac21c11c29c11c11"></a>

Infine, la funzione di rotazione Lambda sposta l'etichetta `AWSCURRENT` dalla precedente versione segreta a questa versione, che rimuove anche l'etichetta `AWSPENDING` nella stessa chiamata API. Secrets Manager aggiunge l'etichetta di gestione temporanea `AWSPREVIOUS` alla versione precedente, in modo da conservare l'ultima versione nota del segreto. 

Il metodo **finish\$1secret** consente [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)di spostare l'etichetta di staging `AWSCURRENT` dalla versione segreta precedente alla nuova versione segreta. Gestione dei segreti aggiunge automaticamente l'etichetta di gestione temporanea `AWSPREVIOUS` alla versione precedente, in modo da conservare l'ultima versione nota del segreto. 

**Suggerimenti per scrivere una funzione di rotazione personalizzata**
+ Non rimuovere `AWSPENDING` prima di questo punto e non rimuoverlo utilizzando una chiamata API separata, poiché ciò può indicare a Secrets Manager che la rotazione non è stata completata correttamente. Secrets Manager aggiunge l'etichetta di gestione temporanea `AWSPREVIOUS` alla versione precedente, in modo da conservare l'ultima versione nota del segreto. 

Quando la rotazione ha esito positivo, l'etichetta di gestione temporanea `AWSPENDING` potrebbe essere collegata alla stessa versione come la versione `AWSCURRENT`, oppure potrebbe non essere collegata a nessuna versione. Se l'etichetta di gestione temporanea `AWSPENDING` è presente ma non è collegata alla stessa versione come `AWSCURRENT`, qualsiasi successiva chiamata di rotazione presuppone che una precedente richiesta di rotazione sia ancora in corso e viene segnalato un errore. Quando la rotazione non ha esito positivo, l'etichetta di gestione temporanea `AWSPENDING` potrebbe essere collegata a una versione di un segreto vuota. Per ulteriori informazioni, consulta [Risoluzione dei problemi della rotazione](troubleshoot_rotation.md).

# Gestione dei segreti AWS modelli di funzioni di rotazione
<a name="reference_available-rotation-templates"></a>

Gestione dei segreti AWS fornisce una serie di modelli di funzioni di rotazione che aiutano ad automatizzare la gestione sicura delle credenziali per vari sistemi e servizi di database. I modelli sono funzioni ready-to-use Lambda che implementano le migliori pratiche per la rotazione delle credenziali, aiutandoti a mantenere il tuo livello di sicurezza senza interventi manuali.

I modelli supportano due strategie di rotazione principali:
+ *Rotazione per utente singolo* che aggiorna le credenziali per un singolo utente.
+ *Rotazione tra utenti alternati* che mantiene due utenti separati per eliminare i tempi di inattività durante la modifica delle credenziali.

Secrets Manager fornisce anche un modello generico che funge da punto di partenza per qualsiasi tipo di segreto.

Per utilizzare il modello, consulta:
+ [Rotazione automatica per i segreti del database (console)](rotate-secrets_turn-on-for-db.md)
+ [Rotazione automatica per i segreti non relativi al database (console)](rotate-secrets_turn-on-for-other.md)

Per scrivere una funzione di rotazione personalizzata, consultate [Scrivere una funzione di rotazione](rotate-secrets_lambda-functions.md).

**Contents**
+ [

## Amazon RDS e Amazon Aurora
](#RDS_rotation_templates)
  + [

### Amazon RDS Db2 per utente singolo
](#sar-template-db2-singleuser)
  + [

### Amazon RDS Db2 utenti alternati
](#sar-template-db2-multiuser)
  + [

### Utente singolo di Amazon RDS MariaDB
](#sar-template-mariadb-singleuser)
  + [

### Utenti alternativi di Amazon RDS MariaDB
](#sar-template-mariadb-multiuser)
  + [

### Utente singolo di Amazon RDS e Amazon Aurora MySQL
](#sar-template-mysql-singleuser)
  + [

### Utenti alternati di Amazon RDS e Amazon Aurora MySQL
](#sar-template-mysql-multiuser)
  + [

### Utente singolo per Amazon RDS Oracle
](#sar-template-oracle-singleuser)
  + [

### Utenti alternati Amazon RDS Oracle
](#sar-template-oracle-multiuser)
  + [

### Utente singolo di Amazon RDS e Amazon Aurora PostgreSQL
](#sar-template-postgre-singleuser)
  + [

### Utenti alternati di Amazon RDS e Amazon Aurora PostgreSQL
](#sar-template-postgre-multiuser)
  + [

### Amazon RDS Microsoft per utente SQLServer singolo
](#sar-template-sqlserver-singleuser)
  + [

### Amazon RDS Microsoft utenti SQLServer alternati
](#sar-template-sqlserver-multiuser)
+ [

## Amazon DocumentDB (compatibile con MongoDB)
](#NON-RDS_rotation_templates)
  + [

### Utente singolo Amazon DocumentDB
](#sar-template-mongodb-singleuser)
  + [

### Utenti alternativi Amazon DocumentDB
](#sar-template-mongodb-multiuser)
+ [

## Amazon Redshift
](#template-redshift)
  + [

### Amazon Redshift utente singolo
](#sar-template-redshift-singleuser)
  + [

### Utenti alternati Amazon Redshift
](#sar-template-redshift-multiuser)
+ [

## Amazon Timestream per InfluxDB
](#template-TimeStream)
  + [

### Amazon Timestream per utente singolo InfluxDB
](#template-TimeStream-singleuser)
  + [

### Amazon Timestream per utenti alternati di InfluxDB
](#template-TimeStream-multiuser)
+ [

## Amazon ElastiCache
](#template-ELC)
+ [

## Active Directory
](#template-AD)
  + [

### Credenziali Active Directory
](#template-AD-password)
  + [

### Tastiera Active Directory
](#template-AD-keytab)
+ [

## Other type of secret (Altro tipo di segreto)
](#OTHER_rotation_templates)

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

### Amazon RDS Db2 per utente singolo
<a name="sar-template-db2-singleuser"></a>
+ **Nome del modello:** SecretsManager RDSDb2 RotationSingleUser
+ **Strategia di rotazione:** [Strategia di rotazione a utente singolo](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **Struttura del `SecretString`:** [Credenziali Amazon RDS e Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Codice sorgente: 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)
+ **Dipendenza: **[python-ibmdb](https://github.com/ibmdb/python-ibmdb)

### Amazon RDS Db2 utenti alternati
<a name="sar-template-db2-multiuser"></a>
+ **Nome del modello:** SecretsManager RDSDb2 RotationMultiUser
+ **Strategia di rotazione:** [Strategia di rotazione a utenti alternati](rotation-strategy.md#rotating-secrets-two-users).
+ **Struttura del `SecretString`:** [Credenziali Amazon RDS e Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Codice sorgente: 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)
+ **Dipendenza: **[python-ibmdb](https://github.com/ibmdb/python-ibmdb)

### Utente singolo di Amazon RDS MariaDB
<a name="sar-template-mariadb-singleuser"></a>
+ **Nome del modello:** SecretsManager RDSMaria DBRotation SingleUser
+ **Strategia di rotazione:** [Strategia di rotazione a utente singolo](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **Struttura del `SecretString`:** [Credenziali Amazon RDS e Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Codice sorgente: 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)
+ **Dipendenza:** PyMy SQL 1.0.2. Se si utilizza la password sha256 per l'autenticazione, PyMy SQL [rsa]. Per informazioni sull'utilizzo di pacchetti con codice compilato in un runtime Lambda, vedi [Come posso aggiungere pacchetti Python con binari compilati al mio pacchetto di distribuzione e rendere il pacchetto compatibile](https://repost.aws/knowledge-center/lambda-python-package-compatible) con Lambda? *nel Knowledge Center.AWS *

### Utenti alternativi di Amazon RDS MariaDB
<a name="sar-template-mariadb-multiuser"></a>
+ **Nome del modello:** SecretsManager RDSMaria DBRotation MultiUser
+ **Strategia di rotazione:** [Strategia di rotazione a utenti alternati](rotation-strategy.md#rotating-secrets-two-users).
+ **Struttura del `SecretString`:** [Credenziali Amazon RDS e Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Codice sorgente: 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)
+ **Dipendenza:** PyMy SQL 1.0.2. Se si utilizza la password sha256 per l'autenticazione, PyMy SQL [rsa]. Per informazioni sull'utilizzo di pacchetti con codice compilato in un runtime Lambda, vedi [Come posso aggiungere pacchetti Python con binari compilati al mio pacchetto di distribuzione e rendere il pacchetto compatibile](https://repost.aws/knowledge-center/lambda-python-package-compatible) con Lambda? *nel Knowledge Center.AWS *

### Utente singolo di Amazon RDS e Amazon Aurora MySQL
<a name="sar-template-mysql-singleuser"></a>
+ **Nome del modello:** SecretsManager RDSMy SQLRotation SingleUser
+ **Strategia di rotazione:** [Strategia di rotazione a utente singolo](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **Struttura del `SecretString` prevista:** [Credenziali Amazon RDS e Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Codice sorgente: 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)
+ **Dipendenza:** PyMy SQL 1.0.2. Se si utilizza la password sha256 per l'autenticazione, PyMy SQL [rsa]. Per informazioni sull'utilizzo di pacchetti con codice compilato in un runtime Lambda, vedi [Come posso aggiungere pacchetti Python con binari compilati al mio pacchetto di distribuzione e rendere il pacchetto compatibile](https://repost.aws/knowledge-center/lambda-python-package-compatible) con Lambda? *nel Knowledge Center.AWS *

### Utenti alternati di Amazon RDS e Amazon Aurora MySQL
<a name="sar-template-mysql-multiuser"></a>
+ **Nome del modello:** SecretsManager RDSMy SQLRotation MultiUser
+ **Strategia di rotazione:** [Strategia di rotazione a utenti alternati](rotation-strategy.md#rotating-secrets-two-users).
+ **Struttura del `SecretString` prevista:** [Credenziali Amazon RDS e Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Codice sorgente: 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)
+ **Dipendenza:** PyMy SQL 1.0.2. Se si utilizza la password sha256 per l'autenticazione, PyMy SQL [rsa]. Per informazioni sull'utilizzo di pacchetti con codice compilato in un runtime Lambda, vedi [Come posso aggiungere pacchetti Python con binari compilati al mio pacchetto di distribuzione e rendere il pacchetto compatibile](https://repost.aws/knowledge-center/lambda-python-package-compatible) con Lambda? *nel Knowledge Center.AWS *

### Utente singolo per Amazon RDS Oracle
<a name="sar-template-oracle-singleuser"></a>
+ **Nome del modello:** SecretsManager RDSOracle RotationSingleUser
+ **Strategia di rotazione:** [Strategia di rotazione a utente singolo](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **Struttura del `SecretString` prevista:** [Credenziali Amazon RDS e Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Codice sorgente: 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)
+ **Dipendenza:** [python-oracledb](https://github.com/oracle/python-oracledb) 2.4.1

### Utenti alternati Amazon RDS Oracle
<a name="sar-template-oracle-multiuser"></a>
+ **Nome del modello:** SecretsManager RDSOracle RotationMultiUser
+ **Strategia di rotazione:** [Strategia di rotazione a utenti alternati](rotation-strategy.md#rotating-secrets-two-users).
+ **Struttura del `SecretString` prevista:** [Credenziali Amazon RDS e Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Codice sorgente: 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)
+ **Dipendenza:** [python-oracledb](https://github.com/oracle/python-oracledb) 2.4.1

### Utente singolo di Amazon RDS e Amazon Aurora PostgreSQL
<a name="sar-template-postgre-singleuser"></a>
+ **Nome del modello:** SecretsManager RDSPostgre SQLRotation SingleUser
+ **Strategia di rotazione:** [Strategia di rotazione a utente singolo](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **Struttura del `SecretString` prevista:** [Credenziali Amazon RDS e Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Codice sorgente: 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)
+ **Dipendenza: PyGre SQL 5.2.5**

### Utenti alternati di Amazon RDS e Amazon Aurora PostgreSQL
<a name="sar-template-postgre-multiuser"></a>
+ **Nome del modello:** SecretsManager RDSPostgre SQLRotation MultiUser
+ **Strategia di rotazione:** [Strategia di rotazione a utenti alternati](rotation-strategy.md#rotating-secrets-two-users).
+ **Struttura del `SecretString` prevista:** [Credenziali Amazon RDS e Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Codice sorgente: 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)
+ **Dipendenza: PyGre SQL 5.2.5**

### Amazon RDS Microsoft per utente SQLServer singolo
<a name="sar-template-sqlserver-singleuser"></a>
+ **Nome del modello:** SecretsManager RDSSQLServer RotationSingleUser
+ **Strategia di rotazione:** [Strategia di rotazione a utente singolo](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **Struttura del `SecretString` prevista:** [Credenziali Amazon RDS e Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Codice sorgente: 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)
+ **Dipendenza: **Pymssql 2.2.2

### Amazon RDS Microsoft utenti SQLServer alternati
<a name="sar-template-sqlserver-multiuser"></a>
+ **Nome del modello:** SecretsManager RDSSQLServer RotationMultiUser
+ **Strategia di rotazione:** [Strategia di rotazione a utenti alternati](rotation-strategy.md#rotating-secrets-two-users).
+ **Struttura del `SecretString` prevista:** [Credenziali Amazon RDS e Aurora](reference_secret_json_structure.md#reference_secret_json_structure_rds).
+ **Codice sorgente: 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)
+ **Dipendenza: **Pymssql 2.2.2

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

### Utente singolo Amazon DocumentDB
<a name="sar-template-mongodb-singleuser"></a>
+ **Nome del modello:** SecretsManagerMongo DBRotation SingleUser
+ **Strategia di rotazione:** [Strategia di rotazione a utente singolo](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **Struttura del `SecretString` prevista:** [Credenziali Amazon DocumentDB](reference_secret_json_structure.md#reference_secret_json_structure_docdb).
+ **Codice sorgente: 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)
+ **Dipendenza: 4.2.0** PyMongo 

### Utenti alternativi Amazon DocumentDB
<a name="sar-template-mongodb-multiuser"></a>
+ **Nome del modello:** SecretsManagerMongo DBRotation MultiUser
+ **Strategia di rotazione:** [Strategia di rotazione a utenti alternati](rotation-strategy.md#rotating-secrets-two-users).
+ **Struttura del `SecretString` prevista:** [Credenziali Amazon DocumentDB](reference_secret_json_structure.md#reference_secret_json_structure_docdb).
+ **Codice sorgente: 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)
+ **Dipendenza: 4.2.0** PyMongo 

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

### Amazon Redshift utente singolo
<a name="sar-template-redshift-singleuser"></a>
+ **Nome del modello:** SecretsManagerRedshiftRotationSingleUser
+ **Strategia di rotazione:** [Strategia di rotazione a utente singolo](rotation-strategy.md#rotating-secrets-one-user-one-password).
+ **Struttura del `SecretString` prevista:** [Credenziali Amazon Redshift](reference_secret_json_structure.md#reference_secret_json_structure_RS).
+ **Codice sorgente: 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)
+ **Dipendenza: PyGre SQL 5.2.5**

### Utenti alternati Amazon Redshift
<a name="sar-template-redshift-multiuser"></a>
+ **Nome del modello:** SecretsManagerRedshiftRotationMultiUser
+ **Strategia di rotazione:** [Strategia di rotazione a utenti alternati](rotation-strategy.md#rotating-secrets-two-users).
+ **Struttura del `SecretString` prevista:** [Credenziali Amazon Redshift](reference_secret_json_structure.md#reference_secret_json_structure_RS).
+ **Codice sorgente: 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)
+ **Dipendenza: PyGre SQL 5.2.5**

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

*Per utilizzare questi modelli, consulta l'articolo [Come Amazon Timestream for InfluxDB utilizza i segreti nella Amazon Timestream](https://docs.aws.amazon.com/timestream/latest/developerguide/timestream-for-influx-security-db-secrets.html) Developer Guide.*

### Amazon Timestream per utente singolo InfluxDB
<a name="template-TimeStream-singleuser"></a>
+ **Nome del modello: Influx** SecretsManager  DBRotation SingleUser
+ **Struttura del `SecretString` prevista:** [Amazon Timestream per la struttura segreta di InfluxDB](reference_secret_json_structure.md#reference_secret_json_structure_TIME).
+ **Codice sorgente: https://github.com/aws-samples/** [aws-secrets-manager-rotation- \$1function.py lambdas/tree/master/SecretsManagerInfluxDBRotationSingleUser/lambda](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/tree/master/SecretsManagerInfluxDBRotationSingleUser/lambda_function.py)
+ **Dipendenza: client python** InfluxDB 2.0

### Amazon Timestream per utenti alternati di InfluxDB
<a name="template-TimeStream-multiuser"></a>
+ **Nome del modello:** SecretsManagerInflux DBRotation MultiUser
+ **Struttura del `SecretString` prevista:** [Amazon Timestream per la struttura segreta di InfluxDB](reference_secret_json_structure.md#reference_secret_json_structure_TIME).
+ **Codice sorgente: 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)
+ **Dipendenza: client python** InfluxDB 2.0

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

Per utilizzare questo modello, consulta [Rotazione automatica delle password per gli utenti](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/User-Secrets-Manager.html) nella *Amazon ElastiCache User* Guide.
+ **Nome del modello:** SecretsManagerElasticacheUserRotation
+ **Struttura del `SecretString` prevista:** [ElastiCache Credenziali Amazon](reference_secret_json_structure.md#reference_secret_json_structure_ELC).
+ **Codice sorgente: 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>

### Credenziali Active Directory
<a name="template-AD-password"></a>
+ **Nome del modello:** SecretsManagerActiveDirectoryRotationSingleUser
+ **Struttura del `SecretString` prevista:** [Credenziali Active Directory](reference_secret_json_structure.md#reference_secret_json_structure_AD).
+ **Codice sorgente: 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)

### Tastiera Active Directory
<a name="template-AD-keytab"></a>
+ **Nome del modello:** SecretsManagerActiveDirectoryAndKeytabRotationSingleUser
+ **Struttura del `SecretString` prevista:** [Credenziali Active Directory](reference_secret_json_structure.md#reference_secret_json_structure_AD).
+ **Codice sorgente: 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)
+ **Dipendenze: msktutil**

## Other type of secret (Altro tipo di segreto)
<a name="OTHER_rotation_templates"></a>

Secrets Manager fornisce questo modello come punto di partenza per creare una funzione di rotazione per qualsiasi tipo di segreto.
+ **Nome del modello:** SecretsManagerRotationTemplate
+ **Codice sorgente: 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)

# Autorizzazioni del ruolo di esecuzione della funzione di rotazione Lambda per Gestione dei segreti AWS
<a name="rotating-secrets-required-permissions-function"></a>

Infatti[Rotazione tramite funzione Lambda](rotate-secrets_lambda.md), quando Secrets Manager utilizza una funzione Lambda per ruotare un segreto, Lambda assume un [ruolo di esecuzione IAM](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) e fornisce tali credenziali al codice della funzione Lambda. Per istruzioni su come impostare la rotazione automatica, consulta: 
+ [Rotazione automatica per i segreti del database (console)](rotate-secrets_turn-on-for-db.md)
+ [Rotazione automatica per i segreti non relativi al database (console)](rotate-secrets_turn-on-for-other.md)
+ [Rotazione automatica (AWS CLI)](rotate-secrets_turn-on-cli.md)

Negli esempi seguenti vengono illustrate le policy in linea per i ruoli di esecuzione della funzione di rotazione Lambda. Per creare un ruolo di esecuzione e allegare una policy di autorizzazione, vedere [Ruolo di esecuzione di AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html).

**Topics**
+ [

## Policy per un ruolo di esecuzione della funzione di rotazione Lambda
](#rotating-secrets-required-permissions-function-example)
+ [

## Istruzione della policy per una chiave gestita dal cliente
](#rotating-secrets-required-permissions-function-cust-key-example)
+ [

## Istruzione della policy per la strategia a utenti alternati
](#rotating-secrets-required-permissions-function-alternating-example)

## Policy per un ruolo di esecuzione della funzione di rotazione Lambda
<a name="rotating-secrets-required-permissions-function-example"></a>

La seguente policy di esempio consente alla funzione di rotazione di:
+ Esegui le operazioni di Secrets Manager per*SecretARN*.
+ Creare una nuova password.
+ Impostare la configurazione richiesta se il database o il servizio è in esecuzione in un VPC. Consulta [Configurazione di una funzione Lambda per accedere alle risorse in un VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).

------
#### [ 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"
        }
    ]
}
```

------

## Istruzione della policy per una chiave gestita dal cliente
<a name="rotating-secrets-required-permissions-function-cust-key-example"></a>

Se il segreto è crittografato con una chiave KMS diversa da Chiave gestita da AWS `aws/secretsmanager`, allora è necessario concedere l'autorizzazione per utilizzare la chiave al ruolo di esecuzione Lambda. È possibile utilizzare il [contesto di crittografia SecretARN](security-encryption.md#security-encryption-encryption-context) per limitare l'uso della funzione di decrittografia, in modo che il ruolo della funzione di rotazione sia autorizzato ad accedere soltanto per decrittografare il segreto della cui rotazione è responsabile. Nell'esempio seguente viene illustrata un'istruzione da aggiungere alla policy del ruolo di esecuzione per decrittografare il segreto utilizzando la chiave KMS.

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

Per utilizzare la funzione di rotazione per più segreti crittografati con una chiave gestita dal cliente, aggiungi un'istruzione come l'esempio seguente per consentire al ruolo di esecuzione di decrittografare il segreto.

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

## Istruzione della policy per la strategia a utenti alternati
<a name="rotating-secrets-required-permissions-function-alternating-example"></a>

Per informazioni sulla *strategia di rotazione a utenti alternati*, consulta la sezione [Strategie di rotazione delle funzioni Lambda](rotation-strategy.md).

Per un segreto che contiene le credenziali di Amazon RDS, se utilizzi la strategia degli utenti alternati e il segreto del superutente è gestito [da Amazon RDS](rotate-secrets_managed.md), devi anche consentire alla funzione di rotazione di effettuare chiamate in sola lettura su APIs Amazon RDS in modo che possa ottenere le informazioni di connessione per il database. Ti consigliamo di allegare la policy AWS gestita [Amazon RDSRead OnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSReadOnlyAccess.html).

La seguente policy di esempio consente alla funzione di:
+ Esegui le operazioni di Secrets Manager per*SecretARN*.
+ Recupera le credenziali nel segreto del superutente. Gestione dei segreti utilizza le credenziali presenti nel segreto del superutente per aggiornare le credenziali nel segreto che viene ruotato.
+ Creare una nuova password.
+ Impostare la configurazione richiesta se il database o il servizio è in esecuzione in un VPC. Per ulteriori informazioni, consulta [Configurazione di una funzione Lambda per accedere alle risorse in un VPC](https://docs.aws.amazon.com/lambda/latest/dg/vpc.html).

------
#### [ 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"
        }
    ]
}
```

------

# Accesso alla rete per la funzione AWS Lambda di rotazione
<a name="rotation-function-network-access"></a>

Infatti[Rotazione tramite funzione Lambda](rotate-secrets_lambda.md), quando Secrets Manager utilizza una funzione Lambda per ruotare un segreto, la funzione di rotazione Lambda deve essere in grado di accedere al segreto. Se il segreto contiene credenziali, la funzione Lambda deve anche potere accedere all'origine di tali credenziali, ad esempio un database o un servizio.

**Per accedere a un segreto**  
La funzione di rotazione Lambda deve essere in grado di accedere a un endpoint di Secrets Manager. Se la funzione Lambda può accedere a Internet, è possibile utilizzare un endpoint pubblico. Per trovare un endpoint, consulta [Gestione dei segreti AWS endpoint](asm_access.md#endpoints).  
Se la funzione Lambda viene eseguita in un VPC che non dispone di accesso a Internet, si consiglia di configurare gli endpoint privati del servizio Secrets Manager all'interno del VPC. Il tuo VPC può quindi intercettare le richieste indirizzate all'endpoint regionale pubblico e reindirizzarle all'endpoint privato. Per ulteriori informazioni, consulta [Endpoint VPC (AWS PrivateLink)](vpc-endpoint-overview.md).  
In alternativa, puoi abilitare la funzione Lambda per accedere a un endpoint pubblico di Gestione dei segreti aggiungendo un [gateway NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) o un [gateway Internet](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html) al VPC che consente al traffico dal tuo VPC di raggiungere l'endpoint pubblico Ciò espone il tuo VPC a un livello di rischio perché vi è un indirizzo IP (per il gateway) che può essere soggetto ad attacchi dalla rete Internet pubblica.

**(Facoltativo) Per accedere al database o al servizio**  
Per segreti come le chiavi API, non è necessario aggiornare il database o il servizio di origine insieme al segreto.  
Se il tuo database o servizio è in esecuzione su un' EC2 istanza Amazon in un VPC, ti consigliamo di configurare la funzione Lambda per l'esecuzione nello stesso VPC. Quindi la funzione di rotazione può comunicare direttamente con il servizio. Per ulteriori informazioni, consulta [Configurazione dell'accesso VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html#vpc-configuring).  
Per consentire alla funzione Lambda di accedere al database o al servizio, è necessario assicurarsi che i gruppi di sicurezza collegati alla funzione di rotazione Lambda consentano connessioni in uscita al database o al servizio. Inoltre, è necessario accertarsi che i gruppi di sicurezza collegati al database o al servizio consentano le connessioni in entrata dalla funzione di rotazione Lambda. 

# Risolvi i problemi Gestione dei segreti AWS di rotazione
<a name="troubleshoot_rotation"></a>

Per molti servizi, Secrets Manager utilizza una funzione Lambda per ruotare i segreti. Per ulteriori informazioni, consulta [Rotazione tramite funzione Lambda](rotate-secrets_lambda.md). La funzione di rotazione Lambda interagisce con il database o il servizio a cui appartiene il segreto e con Gestione dei segreti. Quando la rotazione non funziona come previsto, è necessario innanzitutto controllare i CloudWatch registri.

**Nota**  
Alcuni servizi possono gestire i segreti per te, tra cui la gestione della rotazione automatica. Per ulteriori informazioni, consulta [Rotazione gestita per Gestione dei segreti AWS i segreti](rotate-secrets_managed.md).

**Topics**
+ [

## Come risolvere gli errori di rotazione segreti nelle funzioni AWS Lambda
](#troubleshooting-secret-rotation-failures)
+ [

## Nessuna attività dopo "Found credentials in environment variables" (Trovate credenziali nelle variabili di ambiente)
](#troubleshoot_rotation_timing-out)
+ [

## Nessuna attività dopo "createSecret"
](#troubleshoot_rotation_createSecret)
+ [

## Errore: "Access to KMS is not allowed"
](#troubleshoot_rotation_kms-key)
+ [

## Errore: "Key is missing from secret JSON" (Chiave non presente nella struttura JSON del segreto)
](#tshoot-lambda-mismatched-secretvalue)
+ [

## Errore: "setSecret: Unable to log into database" (setSecret: impossibile accedere al database)
](#troubleshoot_rotation_setSecret)
+ [

## Errore: "Unable to import module 'lambda\$1function'"
](#tshoot-python-version)
+ [

## Aggiornare una funzione di rotazione esistente da Python 3.7 a 3.9
](#troubleshoot_rotation_python39)
+ [

## Aggiorna una funzione di rotazione esistente da Python 3.9 a 3.10
](#troubleshoot_rotation_python_310)
+ [

## AWS Lambda rotazione segreta con errore `PutSecretValue`
](#troubleshoot_rotation_putsecretvalue)
+ [

## Errore: «Errore durante l'esecuzione di lambda durante il passaggio*<arn>*» *<a rotation>*
](#concurrency-related-failures)

## Come risolvere gli errori di rotazione segreti nelle funzioni AWS Lambda
<a name="troubleshooting-secret-rotation-failures"></a>

Se riscontri errori di rotazione segreti con le funzioni Lambda, utilizza i seguenti passaggi per risolvere il problema.

### Possibili cause
<a name="possible-causes"></a>
+ Esecuzioni simultanee insufficienti per la funzione Lambda
+ Condizioni di gara dovute a più chiamate API durante la rotazione
+ Logica della funzione Lambda errata
+ Problemi di rete tra la funzione Lambda e il database

### Procedure generali per la risoluzione
<a name="general-troubleshooting-steps"></a>

1. Analizza CloudWatch i log:
   + Cerca messaggi di errore specifici o comportamenti imprevisti nei log delle funzioni Lambda
   + Verifica che tutti i passaggi di rotazione (**CreateSecret**,, **SetSecret****TestSecret**,**FinishSecret**) siano stati tentati

1. Controlla le chiamate API durante la rotazione:
   + Evita di effettuare chiamate API mutanti sul segreto durante la rotazione Lambda
   + Assicurati che non vi siano condizioni di gara tra le chiamate e **RotateSecret** **PutSecretValue**

1. Verifica la logica della funzione Lambda:
   + Conferma di utilizzare il codice di AWS esempio più recente per la rotazione segreta
   + Se utilizzi codice personalizzato, controllalo per una corretta gestione di tutte le fasi di rotazione

1. Controlla la configurazione di rete:
   + Verifica che le regole del gruppo di sicurezza consentano alla funzione Lambda di accedere al database
   + Garantire l'accesso corretto agli endpoint VPC o agli endpoint pubblici per Secrets Manager

1. Prova le versioni segrete:
   + Verifica che la AWSCURRENT versione del segreto consenta l'accesso al database
   + Controlla se AWSPENDING le AWSPREVIOUS nostre versioni sono valide

1. Cancella le rotazioni in sospeso:
   + Se la rotazione fallisce costantemente, cancella l'etichetta della AWSPENDING fase temporanea e riprova a ruotare

1. Controlla le impostazioni di concorrenza Lambda:
   + Verifica che le impostazioni di concorrenza siano appropriate per il tuo carico di lavoro
   + Se sospetti problemi di concorrenza, consulta la sezione «Risoluzione dei problemi di rotazione legati alla concorrenza»

## Nessuna attività dopo "Found credentials in environment variables" (Trovate credenziali nelle variabili di ambiente)
<a name="troubleshoot_rotation_timing-out"></a>

Se non si verifica alcuna attività dopo la visualizzazione del messaggio "Found credentials in environment variables" (Trovate credenziali nelle variabili di ambiente) e la durata del processo è lunga (ad esempio, il timeout predefinito di Lambda è 30.000 ms), è possibile che il timeout della funzione Lambda si verifichi durante il tentativo di raggiungere l'endpoint di Gestione dei segreti.

La funzione di rotazione Lambda deve essere in grado di accedere a un endpoint di Secrets Manager. Se la funzione Lambda può accedere a Internet, è possibile utilizzare un endpoint pubblico. Per trovare un endpoint, consulta [Gestione dei segreti AWS endpoint](asm_access.md#endpoints).

Se la funzione Lambda viene eseguita in un VPC che non dispone di accesso a Internet, si consiglia di configurare gli endpoint privati del servizio Secrets Manager all'interno del VPC. Il tuo VPC può quindi intercettare le richieste indirizzate all'endpoint regionale pubblico e reindirizzarle all'endpoint privato. Per ulteriori informazioni, consulta [Endpoint VPC (AWS PrivateLink)](vpc-endpoint-overview.md).

In alternativa, puoi abilitare la funzione Lambda per accedere a un endpoint pubblico di Gestione dei segreti aggiungendo un [gateway NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) o un [gateway Internet](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html) al VPC che consente al traffico dal tuo VPC di raggiungere l'endpoint pubblico Ciò espone il tuo VPC a un livello di rischio perché vi è un indirizzo IP (per il gateway) che può essere soggetto ad attacchi dalla rete Internet pubblica.

## Nessuna attività dopo "createSecret"
<a name="troubleshoot_rotation_createSecret"></a>

Di seguito sono riportati i problemi che possono causare l'interruzione della rotazione dopo createSecret:

**La rete VPC ACLs non consente l'ingresso e l'uscita del traffico HTTPS.**  
Per ulteriori informazioni, consulta [Controllare il traffico verso le sottoreti utilizzando la rete ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) nella Amazon *VPC* User Guide.

**La configurazione del timeout della funzione Lambda è troppo breve per eseguire il processo. **  
Per ulteriori informazioni, consulta [Configurazione delle opzioni della funzione Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html) nella *Guida per gli sviluppatori di AWS Lambda *.

**L'endpoint VPC di Secrets Manager non consente al VPC di entrare CIDRs nei gruppi di sicurezza assegnati. **  
Per ulteriori informazioni, consulta [Controllo del traffico verso le risorse utilizzando gruppi di sicurezza](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) nella *Guida per l'utente di Amazon VPC*.

**La policy degli endpoint VPC di Gestione dei segreti non consente a Lambda di utilizzare l'endpoint VPC. **  
Per ulteriori informazioni, consulta [Utilizzo di un Gestione dei segreti AWS endpoint VPC](vpc-endpoint-overview.md).

**Il segreto utilizza la rotazione alternata degli utenti, il segreto superutente è gestito da Amazon RDS e la funzione Lambda non può accedere all'API RDS.**  
Per la [rotazione alternata degli utenti](rotation-strategy.md#rotating-secrets-two-users) in cui il segreto del superutente è [gestito da un altro servizio AWS](service-linked-secrets.md), la funzione di rotazione Lambda deve essere in grado di chiamare l'endpoint per ottenere le informazioni sulla connessione al database. Si consiglia di configurare un endpoint VPC per il servizio del database. Per ulteriori informazioni, consulta:  
+  [Endpoint VPC dell'interfaccia e API Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/vpc-interface-endpoints.html) nella *Guida per l'utente di Amazon RDS*.
+ [Utilizzo degli endpoint VPC](https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-working-with-endpoints.html) nella *Guida di gestione di Amazon Redshift*.

## Errore: "Access to KMS is not allowed"
<a name="troubleshoot_rotation_kms-key"></a>

Se ricevi l'errore `ClientError: An error occurred (AccessDeniedException) when calling the GetSecretValue operation: Access to KMS is not allowed`, la funzione di rotazione non è autorizzata a decrittografare il segreto utilizzando la chiave KMS utilizzata per crittografare il segreto. La policy delle autorizzazioni potrebbe contenere una condizione che limita il contesto di crittografia a un segreto specifico. Per informazioni sulle autorizzazioni richieste, consulta la sezione [Istruzione della policy per una chiave gestita dal cliente](rotating-secrets-required-permissions-function.md#rotating-secrets-required-permissions-function-cust-key-example).

## Errore: "Key is missing from secret JSON" (Chiave non presente nella struttura JSON del segreto)
<a name="tshoot-lambda-mismatched-secretvalue"></a>

Una funzione di rotazione Lambda richiede che il valore segreto si trovi in una struttura JSON specifica. Se viene visualizzato questo errore, è possibile che la chiave a cui la funzione di rotazione ha cercato di accedere non sia presente nella struttura JSON. Per informazioni sulla struttura JSON per ogni tipo di segreto, consulta [Struttura dei segreti JSON Gestione dei segreti AWS](reference_secret_json_structure.md).

## Errore: "setSecret: Unable to log into database" (setSecret: impossibile accedere al database)
<a name="troubleshoot_rotation_setSecret"></a>

Di seguito sono riportati i problemi che possono causare questo errore:

**La funzione di rotazione non può accedere al database.**  
Se la durata del processo è lunga, ad esempio oltre 5.000 ms, la funzione di rotazione Lambda potrebbe non essere in grado di accedere al database tramite la rete.   
Se il database o il servizio è in esecuzione su un'istanza Amazon EC2 in un VPC, è consigliabile configurare la funzione Lambda in modo che sia eseguita nello stesso VPC. Quindi la funzione di rotazione può comunicare direttamente con il servizio. Per ulteriori informazioni, consulta [Configurazione dell'accesso VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html#vpc-configuring).  
Per consentire alla funzione Lambda di accedere al database o al servizio, è necessario assicurarsi che i gruppi di sicurezza collegati alla funzione di rotazione Lambda consentano connessioni in uscita al database o al servizio. Inoltre, è necessario accertarsi che i gruppi di sicurezza collegati al database o al servizio consentano le connessioni in entrata dalla funzione di rotazione Lambda. 

**Le credenziali nel segreto non sono corrette.**  
Se la durata del processo è breve, la funzione di rotazione Lambda potrebbe non essere in grado di autenticarsi con le credenziali segrete. Verifica le credenziali accedendo manualmente con le informazioni contenute nelle `AWSPREVIOUS` versioni `AWSCURRENT` e nelle versioni del segreto utilizzando il comando. 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)

**Il database utilizza `scram-sha-256` per crittografare le password.**  
Se il database è Aurora PostgreSQL versione 13 o successiva e questo utilizza `scram-sha-256` per crittografare le password, ma la funzione di rotazione utilizza `libpq` versione 9 o precedente che non supporta `scram-sha-256`, in questo caso la funzione di rotazione non può connettersi al database.   

**Per determinare quali utenti del database utilizzano la crittografia `scram-sha-256`**
+ Consulta *Checking for users with non-SCRAM passwords* (Verifica della presenza di utenti con password non SCRAM) nel blog [Autenticazione SCRAM in RDS per PostgreSQL 13](https://aws.amazon.com/blogs/database/scram-authentication-in-rds-for-postgresql-13/).

**Per determinare quale versione di `libpq` viene utilizzata dalla funzione di rotazione**

1. In un computer basato su Linux, sulla console Lambda, accedi alla funzione di rotazione e scarica il pacchetto di implementazione. Decomprimi il file zip in una directory di lavoro.

1. Nella riga di comando, nella directory di lavoro, esegui:

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

1. Se vedi la stringa *`PostgreSQL-9.4.x`*, o qualsiasi versione principale inferiore a 10, la funzione di rotazione non supporta `scram-sha-256`.
   + Output per una funzione di rotazione che non supporta `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 per una funzione di rotazione che supporta `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 per una funzione di rotazione che supporta `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 per una funzione di rotazione che supporta `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]`
Se imposti la rotazione segreta automatica prima del 30 dicembre 2021, la funzione di rotazione inclusa in una versione precedente non la `libpq` supportava. `scram-sha-256` Per supportare `scram-sha-256`, è necessario [ricreare la funzione di rotazione](rotate-secrets_turn-on-for-db.md). 

**Il database richiede l' SSL/TLS accesso.**  
Se il database richiede una SSL/TLS connessione, ma la funzione di rotazione utilizza una connessione non crittografata, la funzione di rotazione non può connettersi al database. Le funzioni di rotazione per Amazon RDS (tranne Oracle e Db2) e Amazon DocumentDB usano automaticamente Secure Socket Layer (SSL) o Transport Layer Security (TLS) per connettersi al database, se disponibile. Altrimenti usano una connessione non crittografata.  
Se hai impostato la rotazione segreta automatica prima del 20 dicembre 2021, la tua funzione di rotazione potrebbe essere basata su un modello precedente che non supportavaSSL/TLS. To support connections that use SSL/TLS, devi [ricreare la funzione di rotazione](rotate-secrets_turn-on-for-db.md). 

**Per determinare quando è stata creata la funzione di rotazione**

1. Nella console Secrets Manager [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/), apri il tuo segreto. Nella sezione **Rotation configuration** (Configurazione rotazione), sotto **Lambda rotation function** (Funzione di rotazione Lambda), viene visualizzato l'**ARN della funzione Lambda**, ad esempio, `arn:aws:lambda:aws-region:123456789012:function:SecretsManagerMyRotationFunction `. Copia il nome della funzione dalla fine dell'ARN, in questo esempio ` SecretsManagerMyRotationFunction `. 

1. Nella AWS Lambda console [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/), in **Funzioni**, incolla il nome della funzione Lambda nella casella di ricerca, scegli Invio, quindi scegli la funzione Lambda. 

1. Nella pagina dei dettagli della funzione, nella scheda **Configuration** (Configurazione), in **Tag**, copia il valore accanto alla chiave **aws:cloudformation:stack-name**. 

1. Nella AWS CloudFormation console [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/), in **Stacks**, incolla il valore della chiave nella casella di ricerca, quindi scegli Invio.

1. L'elenco degli stack filtra in modo che venga visualizzato solo lo stack che ha creato la funzione di rotazione Lambda. Nella colonna **Created date** (Data di creazione), visualizza la data di creazione dello stack. Questa è la data di creazione della funzione di rotazione Lambda.

## Errore: "Unable to import module 'lambda\$1function'"
<a name="tshoot-python-version"></a>

Potresti ricevere questo errore se stai eseguendo una funzione Lambda precedente che è stata aggiornata automaticamente da Python 3.7 a una versione più recente di Python. Per risolvere l'errore, puoi modificare la versione della funzione Lambda in Python 3.7 e quindi [Aggiornare una funzione di rotazione esistente da Python 3.7 a 3.9](#troubleshoot_rotation_python39). Per ulteriori informazioni, consulta la sezione [Perché la rotazione della mia funzione Lambda di Secrets Manager non è riuscita con un errore "pg module not found"?](https://repost.aws/knowledge-center/secrets-manager-lambda-rotation) in *AWS re:Post*.

## Aggiornare una funzione di rotazione esistente da Python 3.7 a 3.9
<a name="troubleshoot_rotation_python39"></a>

Alcune funzioni di rotazione create prima di novembre 2022 utilizzavano Python 3.7. L' AWS SDK per Python ha smesso di supportare Python 3.7 a dicembre 2023. Per ulteriori informazioni, consulta [Aggiornamenti della politica di supporto di Python per AWS SDKs e strumenti](https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/). Per passare a una nuova funzione di rotazione che utilizza Python 3.9, puoi aggiungere una proprietà runtime a una funzione di rotazione esistente o ricreare la funzione di rotazione.

**Per scoprire quali funzioni di rotazione Lambda usano Python 3.7**

1. Accedi a Console di gestione AWS e apri la AWS Lambda console all'indirizzo [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Nell'elenco delle **funzioni**, filtra per **SecretsManager**.

1. Nell'elenco filtrato delle funzioni, in **Runtime**, cerca Python 3.7.

**Topics**
+ [

### Opzione 1: ricrea la funzione di rotazione usando CloudFormation
](#update-python-opt-1)
+ [

### Opzione 2: aggiorna il runtime per la funzione di rotazione esistente utilizzando CloudFormation
](#update-python-opt-2)
+ [

### Opzione 3: per AWS CDK gli utenti, aggiornate la libreria CDK
](#update-python-opt-3)

### Opzione 1: ricrea la funzione di rotazione usando CloudFormation
<a name="update-python-opt-1"></a>

Quando si utilizza la console Secrets Manager per attivare la rotazione, Secrets Manager crea CloudFormation le risorse necessarie, inclusa la funzione di rotazione Lambda. Se hai utilizzato la console per attivare la rotazione o hai creato la funzione di rotazione utilizzando una CloudFormation pila, puoi utilizzare lo stesso CloudFormation stack per ricreare la funzione di rotazione con un nuovo nome. La nuova funzione utilizza la versione più recente di Python.

**Per trovare lo CloudFormation stack che ha creato la funzione di rotazione**
+ Nella pagina dei dettagli della funzione Lambda, nella sezione **Configurazione** scegli **Tag**. Visualizza l'ARN accanto a **aws:cloudformation:stack-id**.

  Il nome dello stack è incorporato nell'ARN, come illustrato nell'esempio seguente.
  + ARN: `arn:aws:cloudformation:us-west-2:408736277230:stack/SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda-3CUDHZMDMBO8/79fc9050-2eef-11ed-80f0-021fb13c0537`
  + Nome stack: **SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda**

**Per ricreare una funzione di rotazione (CloudFormation)**

1. **In CloudFormation, cerca lo stack per nome, quindi scegli Aggiorna.** 

   Se viene visualizzata una finestra di dialogo che consiglia di aggiornare lo stack principale, scegli **Vai allo stack principale**, quindi scegli **Aggiorna**.

1. Nella pagina **Update stack**, in **Prepara modello**, scegli **Modifica in Application Composer**, quindi in **Modifica modello in Application Composer, scegli il pulsante **Modifica** in Application Composer**.

1. In Application Composer, effettuate le seguenti operazioni:

   1. Nel codice del modello, in`SecretRotationScheduleHostedRotationLambda`, sostituisci il valore di `"functionName": "SecretsManagerTestRotationRDS"` con un nuovo nome di funzione, ad esempio in JSON, `"functionName": "SecretsManagerTestRotationRDSupdated"` 

   1. Scegli **Aggiorna modello**.

   1. Nella CloudFormation finestra **di dialogo Continua a**, scegli **Conferma e continua con CloudFormation**.

1. Continua con il flusso di lavoro CloudFormation dello stack, quindi scegli **Invia**.

### Opzione 2: aggiorna il runtime per la funzione di rotazione esistente utilizzando CloudFormation
<a name="update-python-opt-2"></a>

Quando si utilizza la console Secrets Manager per attivare la rotazione, Secrets Manager crea CloudFormation le risorse necessarie, inclusa la funzione di rotazione Lambda. Se hai utilizzato la console per attivare la rotazione o hai creato la funzione di rotazione utilizzando uno CloudFormation stack, puoi utilizzare lo stesso CloudFormation stack per aggiornare il runtime della funzione di rotazione.

**Per trovare lo CloudFormation stack che ha creato la funzione di rotazione**
+ Nella pagina dei dettagli della funzione Lambda, nella sezione **Configurazione** scegli **Tag**. Visualizza l'ARN accanto a **aws:cloudformation:stack-id**.

  Il nome dello stack è incorporato nell'ARN, come illustrato nell'esempio seguente.
  + ARN: `arn:aws:cloudformation:us-west-2:408736277230:stack/SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda-3CUDHZMDMBO8/79fc9050-2eef-11ed-80f0-021fb13c0537`
  + Nome stack: **SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda**

**Per aggiornare il runtime per una funzione di rotazione (CloudFormation)**

1. **In CloudFormation, cerca lo stack per nome, quindi scegli Aggiorna.** 

   Se viene visualizzata una finestra di dialogo che consiglia di aggiornare lo stack principale, scegli **Vai allo stack principale**, quindi scegli **Aggiorna**.

1. Nella pagina **Update stack**, in **Prepara modello**, scegli **Modifica in Application Composer**, quindi in **Modifica modello in Application Composer, scegli il pulsante **Modifica** in Application Composer**.

1. In Application Composer, effettuate le seguenti operazioni:

   1. Nel modello JSON, per aggiungere`SecretRotationScheduleHostedRotationLambda`, sotto `Properties``Parameters`, sotto. **"runtime": "python3.9"**

   1. Scegli **Aggiorna modello**.

   1. Nella CloudFormation finestra **di dialogo Continua a**, scegli **Conferma e continua con CloudFormation**.

1. Continua con il flusso di lavoro CloudFormation dello stack, quindi scegli **Invia**.

### Opzione 3: per AWS CDK gli utenti, aggiornate la libreria CDK
<a name="update-python-opt-3"></a>

Se hai utilizzato la versione AWS CDK precedente alla v2.94.0 per impostare la rotazione per il tuo segreto, puoi aggiornare la funzione Lambda eseguendo l'aggiornamento alla versione 2.94.0 o successiva. Per ulteriori informazioni, consulta la [Guida per gli sviluppatori v2 di AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html).

## Aggiorna una funzione di rotazione esistente da Python 3.9 a 3.10
<a name="troubleshoot_rotation_python_310"></a>

Secrets Manager sta passando da Python 3.9 a 3.10 per le funzioni di rotazione Lambda. Per passare a una nuova funzione di rotazione che utilizza Python 3.10, dovrai seguire il percorso di aggiornamento in base al tuo metodo di distribuzione. Usa le seguenti procedure per aggiornare sia la versione di Python che le dipendenze sottostanti.

**Per scoprire quali funzioni di rotazione Lambda usano Python 3.9**

1. Accedi a Console di gestione AWS e apri la console all' AWS Lambda indirizzo. [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)

1. Nell'elenco delle **funzioni**, filtra per **SecretsManager**.

1. Nell'elenco filtrato delle funzioni, in **Runtime**, cerca**Python 3.9**.

### Aggiorna i percorsi in base al metodo di distribuzione
<a name="update-python-3.9-paths"></a>

Le funzioni di rotazione Lambda identificate in questo elenco possono essere distribuite tramite la console Secrets Manager, AWS Serverless Application Repository le app o le trasformazioni. CloudFormation Ciascuna di queste strategie di distribuzione ha un percorso di aggiornamento distinto. 

Utilizza una delle seguenti procedure per aggiornare le funzioni di rotazione Lambda, a seconda di come è stata distribuita la funzione.

------
#### [ Gestione dei segreti AWS console-deployed functions ]

Una nuova funzione Lambda deve essere distribuita tramite Gestione dei segreti AWS console poiché non è possibile aggiornare manualmente le dipendenze per le funzioni Lambda esistenti.

Usa la seguente procedura per aggiornare le funzioni distribuite dalla console. Gestione dei segreti AWS 

1. Apri la console Secrets Manager all'indirizzo [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. In **Gestione dei segreti AWS**, seleziona **Segreti**. Seleziona il segreto che utilizza la funzione Lambda che desideri aggiornare.

1. Vai alla scheda **Rotazioni** e seleziona l'opzione **Aggiorna le configurazioni di rotazione**.

1. In **Funzioni di rotazione**, scegli **Crea una nuova funzione** e inserisci un nuovo nome per la funzione di rotazione Lambda.

   1. (Facoltativo) Una volta completato l'aggiornamento, puoi testare la funzione Lambda aggiornata per confermare che funzioni come previsto. Nella scheda **Rotazione**, selezionate **Rotate Secret Immediatamente** per avviare una rotazione immediata.

   1. (Facoltativo) Puoi visualizzare i log delle funzioni e la versione di Python utilizzata in fase di esecuzione in Amazon. CloudWatch Per ulteriori informazioni, consulta [Visualizzazione dei CloudWatch registri per le funzioni Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs-view.html#monitoring-cloudwatchlogs-console) nella Guida per *AWS Lambda gli* sviluppatori.

1. Una volta impostata la nuova funzione di rotazione, è possibile eliminare la vecchia funzione di rotazione.

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

La procedura seguente mostra come aggiornare le AWS Serverless Application Repository distribuzioni. Le funzioni Lambda distribuite tramite AWS Serverless Application Repository hanno un banner `This function belongs to an application. Click here to manage it.` che indica che include un collegamento all'applicazione Lambda a cui appartiene la funzione.

**Importante**  
AWS Serverless Application Repository la disponibilità dipende. Regione AWS 

Utilizzare la procedura seguente per aggiornare le funzioni AWS Serverless Application Repository distribuite.

1. Aprire la AWS Lambda console all'indirizzo [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Vai alla scheda **Configurazioni** della funzione Lambda che deve essere aggiornata.

   1. Avrai bisogno delle seguenti informazioni sulla tua funzione per aggiornare l'applicazione AWS Serverless Application Repository distribuita. Puoi trovare queste informazioni nella console Lambda.
     + **Nome dell'applicazione Lambda**
       + Il nome dell'applicazione Lambda può essere trovato utilizzando il link nel banner. Ad esempio, il banner riporta quanto segue`serverlessrepo-SecretsManagerRedshiftRotationSingleUser`. Il nome in questo esempio è`SecretsManagerRedshiftRotationSingleUser`.
     + **Nome della funzione di rotazione Lambda**
     + **Endpoint Secrets Manager**
       + **L'endpoint è disponibile nelle schede **Configurazioni** e Variabili di **ambiente assegnate alla variabile** SECRETS\$1MANAGER\$1ENDPOINT.**

1. Per aggiornare Python, è necessario aggiornare la versione semantica dell'applicazione serverless. *Vedi [Aggiornamento delle applicazioni nella Guida per](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-how-to-consume-new-version.html#update-applications) gli sviluppatori.AWS Serverless Application Repository *

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

Se hai creato funzioni di rotazione Lambda personalizzate, dovrai aggiornare le dipendenze e i runtime di ogni pacchetto per queste funzioni. Per ulteriori informazioni, consulta [Aggiornamento del runtime della funzione Lambda alla versione più recente](https://repost.aws/knowledge-center/lambda-upgrade-function-runtime).

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

Se la funzione Lambda viene distribuita tramite questa trasformazione, [l'aggiornamento degli stack utilizzando il modello esistente](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-direct.html) consentirà di utilizzare il runtime Lambda aggiornato. 

Utilizza la seguente procedura per aggiornare lo CloudFormation stack utilizzando il modello esistente.

1. Apri la CloudFormation console in [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Nella pagina **Stacks**, seleziona lo stack che desideri aggiornare.

1. Scegli **Aggiorna** nel riquadro dei dettagli dello stack.

1. Per **Scegli un metodo di aggiornamento del modello**, seleziona **Aggiornamento diretto**.

1. Nella pagina **Specificare il modello**, seleziona **Usa modello esistente**.

1. Mantieni tutte le altre opzioni ai valori predefiniti, quindi scegli **Aggiorna stack**.

*Se riscontri problemi durante l'aggiornamento dello stack, consulta [Determinare la causa di un errore dello stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/determine-root-cause-for-stack-failures.html) nella Guida per l'CloudFormation utente.*

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

Ti consigliamo di migrare alla versione di trasformazione più recente, se stai utilizzando. `AWS::SecretsManager-2020-07-23` *Per ulteriori informazioni, consulta [Introduzione a una versione migliorata della Gestione dei segreti AWS trasformazione: 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/) nel Security Blog.AWS * Se continui a utilizzare`AWS::SecretsManager-2020-07-23`, potresti riscontrare un errore di mancata corrispondenza tra la tua versione di runtime e gli artefatti del codice della funzione Lambda. *Per ulteriori informazioni, vedi [AWS::SecretsManager: RotationSchedule HostedRotationLambda](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-runtime) nel modello di riferimento.CloudFormation * 

Se riscontri problemi durante l'aggiornamento dello stack, [determina la causa di un errore dello stack nella Guida](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/determine-root-cause-for-stack-failures.html) per l'*CloudFormation utente*.

------

**Verifica l'aggiornamento di Python**  
**Per verificare l'aggiornamento di Python, apri la console Lambda ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) e accedi alla pagina Function.** Seleziona la funzione che hai aggiornato. Nella sezione **Codice sorgente**, esamina i file inclusi nella directory e assicurati che la versione del file.so di Python sia valida. `3.10`

## AWS Lambda rotazione segreta con errore `PutSecretValue`
<a name="troubleshoot_rotation_putsecretvalue"></a>

Se utilizzi un ruolo presunto o una rotazione tra account con Secrets Manager e trovi un **RotationFailed** evento nel CloudTrail messaggio: Pending secret version *VERSION\$1ID * for Secret *SECRET\$1ARN * was not created by Lambda *LAMBDA\$1ARN.* Rimuovi l'etichetta `AWSPENDING` staging e riavvia la rotazione, quindi devi aggiornare la funzione Lambda per utilizzare il parametro. `RotationToken`<a name="troubleshoot_rotation_procedure"></a>

## Aggiorna la funzione di rotazione Lambda per includere `RotationToken`
<a name="troubleshoot_rotation_procedure"></a>

1. Scarica il codice della funzione Lambda
   + Apri la console Lambda
   + **Nel pannello di navigazione, scegli Funzioni**
   + **Seleziona la tua funzione di rotazione segreta Lambda per il nome della funzione**
   + **Per **Download**, scegli una delle seguenti opzioni**: codice funzione .zip**, **AWS SAM file, Entrambi****
   + Scegli **OK** per salvare la funzione sul tuo computer locale.

1. Modifica `Lambda_handler`

   Includi il parametro rotation\$1token nel passaggio create\$1secret per la rotazione tra account:

   ```
   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. Modifica codice `create_secret`

   Modifica la `create_secret` funzione per accettare e utilizzare il `rotation_token` parametro:

   ```
   # 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. Carica il codice della funzione Lambda aggiornato

   Dopo aver aggiornato il codice della funzione Lambda, [caricalo per ruotare il](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-zip.html#configuration-function-update) tuo segreto.

## Errore: «Errore durante l'esecuzione di lambda durante il passaggio*<arn>*» *<a rotation>*
<a name="concurrency-related-failures"></a>

Se si verificano errori intermittenti di rotazione segreta e la funzione Lambda rimane bloccata in un ciclo di set, ad esempio tra **CreateSecret** e**SetSecret**, il problema potrebbe essere correlato alle impostazioni di concorrenza.

### Passaggi per la risoluzione dei problemi di concorrenza
<a name="concurrency-troubleshooting-steps"></a>

**avvertimento**  
L'impostazione del parametro di concorrenza assegnato su un valore inferiore a 10 può causare una limitazione a causa di thread di esecuzione insufficienti per la funzione Lambda. Per ulteriori informazioni, consulta [Understanding Reserved Concurrency e Provisioned Concurrency](https://docs.aws.amazon.com/lambda/latest/dg/lambda-concurrency.html#reserved-and-provisioned) nella Developer Guide. AWS Lambda AWS Lambda 

1. Controlla e modifica le impostazioni di concorrenza Lambda:
   + Verifica che non `reserved_concurrent_executions` sia impostato su un valore troppo basso (ad esempio, 1)
   + Se utilizzate la concorrenza riservata, impostatela su almeno 10
   + Prendi in considerazione l'utilizzo di una concorrenza senza riserve per una maggiore flessibilità

1. Per la concorrenza preimpostata:
   + Non impostare esplicitamente il parametro di concorrenza fornito (ad esempio, in Terraform).
   + Se devi impostarlo, usa un valore di almeno 10.
   + Esegui un test accurato per assicurarti che il valore scelto sia adatto al tuo caso d'uso.

1. Monitora e regola la concorrenza:
   + Calcola la concorrenza utilizzando questa formula: Concorrenza = (media delle richieste al secondo) \$1 (durata media della richiesta in secondi). Per ulteriori informazioni, vedere [Stima della concorrenza riservata.](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html#estimating-reserved-concurrency)
   + Osserva e registra i valori durante le rotazioni per determinare le impostazioni di concorrenza appropriate.
   + Fate attenzione quando impostate valori di concorrenza bassi. Possono causare un throttling se non ci sono abbastanza thread di esecuzione disponibili.

Per ulteriori informazioni sulla configurazione della concorrenza Lambda, [consulta Configuring reserved concurrency e Configuring provisioned](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html) [concurrency nella Developer Guide](https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html). AWS Lambda 