IT
EspañolEnglishFrançaisDeutschPortuguêsItaliano
Accedi Inizia gratis
Lambda

Come spostare una funzione Lambda in un'altra regione senza perdere le sue pianificazioni

Vuoi che una funzione Lambda stia in un'altra regione (più vicina ai tuoi dati, per prezzo o per normativa) e hai paura di rompere quello che la esegue ogni notte. Cosa viaggia da solo, cosa non viaggia mai e in che ordine farlo perché la vecchia continui a funzionare finché non verifichi la nuova.

⏱ 25 minuti ◎ Per tutti Aggiornata il 29/10/2026

In AWS una funzione Lambda non si sposta: se ne crea un'altra uguale nella nuova regione e, quando verifichi che funziona, spegni o cancelli la vecchia. Quello che spaventa non è il codice (è uno zip che si scarica e si ricarica), ma tutto quello che c'è intorno: la pianificazione che la lancia ogni notte, l'URL pubblico che usa il tuo sito, la coda che la alimenta. Parte di questo è regionale e non viaggia. Questa guida ti dice cosa si porta dietro, cosa no, e l'ordine sicuro: prima la copia, poi la prova, e solo alla fine la vecchia.

Prima di iniziare: cosa significa ogni cosa

Regione
Il gruppo di data center dove vive la funzione (eu-west-1 è l'Irlanda, eu-west-3 è Parigi, eu-south-2 è la Spagna). Quasi tutto in Lambda è regionale: la funzione, i suoi log, le sue regole.
Pacchetto zip
Il file con il codice della funzione. È quello che si copia. Le funzioni fatte come immagine container si spostano in altro modo (bisogna copiare l'immagine in un registro ECR della nuova regione).
Ruolo di esecuzione
Il permesso con cui gira la funzione (cosa può toccare). IAM è globale, quindi lo stesso ruolo vale in qualsiasi regione: non bisogna crearne un altro.
Pianificazione (EventBridge)
La regola "eseguila ogni 15 minuti" o "ogni giorno alle 3:00". È regionale: bisogna ricrearla nella regione di destinazione, con la stessa frequenza.
URL pubblico
L'indirizzo web della funzione. Contiene la regione: nella nuova regione l'indirizzo cambia e bisogna aggiornare quello che lo usava.
Layer
Librerie condivise che la funzione carica all'avvio. I layer sono regionali: un tuo layer va pubblicato anche nella nuova regione.

Passo dopo passo

  1. Fai l'inventario di quello che circonda la funzione

    Apri la funzione nella console di Lambda e guarda in tre posti. In Configuration → Triggers: cosa la esegue (EventBridge, S3, SNS, API Gateway, una coda SQS). In Configuration → Function URL: se ha un URL pubblico. In Code → Layers: se usa layer. Annota anche memoria, timeout, variabili d'ambiente e il ruolo di esecuzione (Configuration → Permissions). Con quell'elenco saprai cosa viaggerà da solo e cosa dovrai rifare.

  2. Decidi cosa si porta dietro e cosa no

    Si porta dietro così com'è: il codice, il linguaggio (runtime), l'handler, la memoria, il tempo massimo, l'architettura, le variabili d'ambiente, la descrizione e lo stesso ruolo di esecuzione. I layer pubblici di AWS di solito esistono in tutte le regioni con lo stesso nome; i tuoi no.

    Le pianificazioni si ricreano a destinazione con la stessa espressione. Gli eventi di EventBridge con pattern (per esempio "quando si ferma una macchina") sono regole regionali su quello che succede in quella regione: non ha senso portarle, se ne creano di nuove se serve. Le code e i flussi (SQS, DynamoDB, Kinesis) restano nella loro regione e continueranno a chiamare la vecchia funzione. Le notifiche di S3 arrivano solo a funzioni della regione del bucket. SNS ammette sottoscrizioni tra regioni, ma bisogna sottoscrivere la nuova funzione a mano. API Gateway va puntato alla nuova funzione. E i log e le metriche restano dov'erano: la nuova funzione parte con lo storico vuoto.

  3. Scarica il codice e crea la funzione nella nuova regione

    Nella vecchia funzione, Code → Actions → Export function → Download deployment package: ti dà lo zip. Cambia regione in alto a destra, Create function, stesso nome, stesso runtime e architettura, e in Permissions → Change default execution role → Use an existing role, scegli il ruolo della vecchia. Poi Upload from → .zip file con quello che hai scaricato. In General configuration metti la stessa memoria e lo stesso timeout; in Environment variables, le stesse. Aspetta che lo stato smetta di essere "Pending".

    Se usi la CLI, è un solo comando a partire dallo zip:

    aws lambda create-function --region eu-west-3 --function-name mi-funcion \
      --runtime python3.12 --handler lambda_function.lambda_handler \
      --role arn:aws:iam::123456789012:role/mi-rol --zip-file fileb://mi-funcion.zip \
      --memory-size 256 --timeout 60 --environment Variables={CLAVE=valor}
  4. Ricrea le pianificazioni e l'URL

    Nella nuova regione, apri EventBridge → Rules → Create rule con lo stesso nome e la stessa espressione che aveva la vecchia (copiala dalla regola originale: rate(15 minutes), cron(0 3 * * ? *)). Destinazione: la nuova funzione. EventBridge aggiunge da solo il permesso per invocarla. Se la regola originale era disabilitata, lascia disabilitata anche la nuova: la attiverai quando spegnerai la vecchia.

    Se aveva un URL pubblico, Configuration → Function URL → Create function URL, stesso tipo di autenticazione. Annota il nuovo indirizzo: dovrai cambiarlo nel sito o nel programma che lo chiamava.

  5. Prova la nuova con entrambe accese

    Mentre verifichi, le due funzioni esistono e le due pianificazioni girano. Se all'attività non dà fastidio ripetersi (un report, una pulizia), lascia così per un giorno e confronta i log di CloudWatch delle due. Se ripetersi è un problema (invia email, addebita, scrive in un database), crea la nuova pianificazione disabilitata, prova la nuova funzione a mano con il pulsante Test e un evento reale, e nel passo seguente fai il cambio in un colpo solo.

  6. Spegni la vecchia, non cancellarla ancora

    Prima lascia la vecchia senza possibilità di essere eseguita: Configuration → Concurrency → Reserve concurrency → 0. Con questo AWS rifiuta tutte le sue esecuzioni, ma il codice e le regole restano lì nel caso tu debba tornare indietro in un minuto. Disabilita anche la sua regola di EventBridge perché non accumuli errori. Abilita la regola della nuova. Cambia l'URL in quello che lo usava e sottoscrivi di nuovo SNS o API Gateway se li aveva.

  7. Cancella la vecchia quando è passata una settimana tranquilla

    Passata una settimana senza spaventi, cancella la vecchia regola di EventBridge e poi la funzione (Actions → Delete). I vecchi log restano in CloudWatch Logs: non si cancellano né ti servono per la nuova funzione, ma conviene impostare una conservazione (per esempio 90 giorni) perché non costino per sempre.

Cosa può andare storto

La nuova funzione si crea ma fallisce con "non autorizzato" quando viene eseguita

Il ruolo di esecuzione è lo stesso, ma quello che la funzione tocca (un bucket, una tabella, un segreto) sta nella vecchia regione o la sua policy lo limita per regione. Controlla nel ruolo le condizioni aws:RequestedRegion e gli ARN con regione, e che quello che usa la funzione esista o sia accessibile dalla nuova regione.

Creandola dice che il layer non esiste

I layer sono regionali. Se è tuo, pubblicalo nella nuova regione (Lambda → Layers → Create layer con lo stesso zip) e aggiungi la nuova versione alla funzione. Se è un layer pubblico di AWS, cerca il suo ARN per quella regione nella documentazione del layer: cambia la regione e a volte il numero di versione.

Viene eseguita due volte ogni notte

Hai entrambe le pianificazioni abilitate. È normale mentre provi; se non lo vuoi più, disabilita la regola della vecchia (o metti la sua concorrenza a 0).

Il sito che usava l'URL pubblico ha smesso di funzionare

Il nuovo URL è diverso (contiene la regione). Cambia l'indirizzo nel sito. Se non puoi toccarlo subito, lascia la vecchia accesa ancora un po' e fai il cambio con calma.

La coda SQS continua a chiamare la vecchia

Le code non cambiano regione. Opzioni: lasciare la vecchia funzione come "ponte" che inoltra alla nuova, creare una nuova coda nella regione di destinazione e far cambiare indirizzo a chi scrive nella coda, oppure accettare che quella parte resti dov'è.

E verso un altro account AWS?

È lo stesso procedimento con una differenza importante: il ruolo di esecuzione vive nell'account, quindi nel nuovo account la funzione non può usare quello del vecchio. Crea lì un ruolo per Lambda (o usa quello che hai già) e, se la funzione tocca S3, database o code, dagli quei permessi: la copia si crea bene ma fallirà all'esecuzione finché il ruolo non potrà fare quello che fa il codice. Le variabili d'ambiente si copiano così come sono: se contengono indirizzi o chiavi del vecchio account, cambiale. E code, bucket e API non cambiano account: bisogna ricrearli o ricollegarli.

In Simplio, "Sposta in un altro account" chiede una chiave di accesso dell'altro account registrata in Chiavi di accesso, verifica prima che abbia i permessi per creare funzioni, e crea la copia con il ruolo simplio-lambda-ejecucion di quell'account (quello dello script dell'Aiuto), avvisandoti che scrive solo log e che devi ampliare quel ruolo se la funzione ha bisogno di più.

In Simplio

In Simplio, nella scheda della funzione c'è un pulsante Sposta di regione…. Scegli la regione, vedi prima cosa si porta dietro (codice, impostazioni, ruolo, pianificazioni) e cosa no (code, notifiche di S3, log), confermi con il secondo fattore e la copia compare con le sue pianificazioni ricreate, in pausa se lo erano. L'originale non si tocca: nella sua scheda resta l'avviso "Copiata in … il …; l'originale è ancora attiva" con i pulsanti Metti in pausa l'originale e Cancella l'originale, che cancella solo se la copia esiste ed è attiva. Se qualcosa fallisce lungo il percorso, Simplio annulla quello creato a destinazione e te lo racconta in parole semplici.

La stessa cosa, in AWS e in Simplio

Nella console di AWSIn Simplio
Sapere cosa viaggia e cosa noRipassare a mano trigger, URL, layer e ruolo in varie schermateUn'anteprima nella stessa scheda: cosa si porta dietro, cosa si ricrea e cosa bisogna rifare, prima di toccare qualsiasi cosa
Creare la copiaScaricare lo zip, creare la funzione, ripetere memoria, tempo, variabili e ruolo; creare le regole una a unaUn pulsante "Sposta di regione…": copia, aspetta che sia attiva, ricrea le pianificazioni con la stessa frequenza e l'URL se lo aveva
Se qualcosa fallisce a metàResta una funzione creata a metà e regole sparse da ripulireSi annulla tutto quello creato a destinazione e l'originale non si tocca
Spegnere e cancellare la vecchiaConcorrenza a 0, disabilitare regole, cancellare dopoDue pulsanti nella scheda dell'originale: "Metti in pausa l'originale" (reversibile) e "Cancella l'originale", che agisce solo se la copia è attiva

Provalo gratis per 15 giorni Vedi come funziona

Tutto questo, senza la console di AWS

Simplio è un pannello in italiano per gestire i tuoi account AWS: macchine, copie programmate, database, domini, e-mail e quanto ti addebita AWS, con permessi per persona e doppio fattore. Senza installare nulla sui tuoi server.

Inizia gratis per 15 giorni, senza carta

Sei già cliente? Area clienti.