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à.
Idempotenza
Le funzioni durevoli forniscono un'idempotenza integrata per gli avvii di esecuzione tramite i nomi di esecuzione. Quando fornisci un nome di esecuzione, Lambda lo utilizza per prevenire esecuzioni duplicate e consentire nuovi tentativi sicuri delle richieste di invocazione. Per impostazione predefinita, i passaggi hanno una semantica di esecuzione almeno una volta. Durante la riproduzione, l'SDK restituisce risultati puntuali senza rieseguire i passaggi completati, ma la logica aziendale deve essere idempotente per gestire potenziali tentativi prima del completamento.
Nota
Le mappature delle sorgenti degli eventi Lambda (ESM) non supportano l'idempotenza al momento del lancio. Pertanto, ogni chiamata (compresi i nuovi tentativi) avvia una nuova esecuzione durevole. Per garantire un'esecuzione idempotente con mappature delle sorgenti degli eventi, implementate la logica di idempotenza nel codice della funzione, ad esempio con Powertools for, oppure AWS Lambda utilizzate una normale funzione Lambda come proxy (dispatcher) per richiamare una funzione durevole con una chiave di idempotenza (parametro del nome di esecuzione).
Nomi di esecuzione
È possibile fornire un nome di esecuzione quando si richiama una funzione durevole. Il nome di esecuzione funge da chiave di idempotenza, che consente di riprovare in sicurezza le richieste di invocazione senza creare esecuzioni duplicate. Se non fornisci un nome, Lambda genera automaticamente un ID di esecuzione univoco.
I nomi di esecuzione devono essere univoci all'interno del tuo account e della tua regione. Quando si richiama una funzione con un nome di esecuzione già esistente, il comportamento di Lambda dipende dallo stato dell'esecuzione esistente e dalla corrispondenza del payload.
Comportamento di idempotenza
La tabella seguente descrive come Lambda gestisce le richieste di chiamata a seconda che si fornisca un nome di esecuzione, lo stato di esecuzione esistente e se il payload corrisponde:
| Scenario | Nome fornito? | Stato di esecuzione esistente | Payload identico? | Comportamento |
|---|---|---|---|---|
| 1 | No | N/A | N/A | Nuova esecuzione iniziata: Lambda genera un ID di esecuzione univoco e avvia una nuova esecuzione |
| 2 | Sì | Non è mai esistito o la conservazione è scaduta | N/A | Nuova esecuzione iniziata: Lambda avvia una nuova esecuzione con il nome fornito |
| 3 | Sì | In esecuzione | Sì | Avvio idempotente: Lambda restituisce le informazioni di esecuzione esistenti senza avviare un duplicato. Per le chiamate sincrone, ciò funge da ricollegamento all'esecuzione in esecuzione |
| 4 | Sì | In esecuzione | No | Errore: Lambda restituisce un DurableExecutionAlreadyExists errore perché un'esecuzione con questo nome è già in esecuzione con un payload diverso |
| 5 | Sì | Chiuso (riuscito, non riuscito, interrotto o scaduto) | Sì | Avvio idempotente: Lambda restituisce le informazioni di esecuzione esistenti senza iniziare una nuova esecuzione. Viene restituito il risultato dell'esecuzione chiusa |
| 6 | Sì | Chiuso (riuscito, fallito, interrotto o scaduto) | No | Errore: Lambda restituisce un DurableExecutionAlreadyExists errore perché un'esecuzione con questo nome è già stata completata con un payload diverso |
Nota
Gli scenari 3 e 5 dimostrano un comportamento idempotente in cui Lambda gestisce in modo sicuro le richieste di invocazione duplicate restituendo le informazioni di esecuzione esistenti anziché creare duplicati.
Fase: idempotenza
Per impostazione predefinita, i passaggi hanno una semantica di esecuzione almeno una volta. Quando la funzione viene riprodotta dopo un'attesa, un callback o un errore, l'SDK confronta ogni passaggio con il registro del checkpoint. Per i passaggi già completati, l'SDK restituisce il risultato del checkpoint senza rieseguire la logica dei passaggi. Tuttavia, se un passaggio fallisce o la funzione viene interrotta prima del completamento del passaggio, il passaggio può essere eseguito più volte.
La logica aziendale alla base delle fasi deve essere idempotente per gestire potenziali nuovi tentativi. Utilizza le chiavi di idempotenza per garantire che operazioni come pagamenti o scritture di database vengano eseguite una sola volta, anche se il passaggio riprova. Consulta Idempotenza e nuovi tentativi nella Guida per gli sviluppatori di AWS Durable Execution SDK per i dettagli su come codificare per l'idempotenza.