

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à.

# 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\_function'"](#tshoot-python-version)
+ [Aggiorna una funzione di rotazione esistente a Python 3.12](#troubleshoot_rotation_python_latest)
+ [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 versione AWSCURRENT del segreto consenta l'accesso al database
   + Verifica se le versioni AWSPREVIOUS o AWSPENDING sono valide

1. Cancella le rotazioni in sospeso:
   + Se la rotazione fallisce costantemente, cancella l'etichetta di staging AWSPENDING 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:

**Le liste di controllo degli accessi (ACL) di rete del VPC non consentono il traffico HTTPS in ingresso e in uscita.**  
Per ulteriori informazioni, consulta [Controllo del traffico verso le sottoreti utilizzando ACL di rete](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) nella *Guida per l'utente di Amazon VPC*.

**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 Gestione dei segreti non consente l'instradamento interdominio senza classi (CIDR) del VPC in ingresso 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 versioni `AWSCURRENT` e `AWSPREVIOUS` 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. Su un Linux-based computer, sulla console Lambda, accedi alla funzione di rotazione e scarica il pacchetto di distribuzione. 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 configuri la rotazione segreta automatica prima del 30 dicembre 2021, la funzione di rotazione inclusa in una versione precedente non `libpq` supportata. `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 funzione di rotazione potrebbe essere basata su un modello precedente che non SSL/TLS supportava. Per supportare le connessioni utilizzate SSL/TLS, è necessario [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\_function'"
<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 [Aggiorna una funzione di rotazione esistente da Python 3.7 a Python 3.12](#troubleshoot_rotation_python_upgrade37). 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*.

## Aggiorna una funzione di rotazione esistente a Python 3.12
<a name="troubleshoot_rotation_python_latest"></a>

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

### Aggiorna una funzione di rotazione esistente da Python 3.7 a Python 3.12
<a name="troubleshoot_rotation_python_upgrade37"></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 delle politiche di supporto di Python per AWS SDK](https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/) e strumenti. Per passare a una nuova funzione di rotazione che utilizza Python 3.12, 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 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.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:{{aws-region}}:123456789012: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:{{aws-region}}:123456789012: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.12"**

   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 o successivo a Python 3.12
<a name="troubleshoot_rotation_python_upgrade39_plus"></a>

**Per scoprire quali funzioni di rotazione Lambda usano una versione precedente di Python**

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 le versioni di Python precedenti a. **Python 3.12**

#### Aggiorna i percorsi in base al metodo di distribuzione
<a name="update-python-version-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**, scegliete **Crea una nuova funzione** e immettete 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\_MANAGER\_ENDPOINT.**

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 all'indirizzo [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Nella pagina **Stack**, 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 *AWS Security Blog*. 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.12`

## 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\_ID }} for Secret {{SECRET\_ARN }} was not created by Lambda {{LAMBDA\_ARN.}} 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\_token nel passaggio create\_secret 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) \* (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)
   + Osservate e registrate 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 