FR
EspañolEnglishFrançaisDeutschPortuguêsItaliano
Se connecter Commencez gratuitement
Lambda

Comment déplacer une fonction Lambda vers une autre région sans perdre ses planifications

Vous voulez qu'une fonction Lambda soit dans une autre région (plus près de vos données, pour le prix ou pour la réglementation) et vous avez peur de casser ce qui l'exécute chaque nuit. Ce qui voyage tout seul, ce qui ne voyage jamais et dans quel ordre procéder pour que l'ancienne continue de fonctionner jusqu'à ce que vous ayez vérifié la nouvelle.

⏱ 25 minutes ◎ Pour tous Mis à jour le 29/10/2026

Chez AWS, une fonction Lambda ne se déplace pas : on en crée une autre identique dans la nouvelle région et, quand on a vérifié qu'elle fonctionne, on éteint ou on supprime l'ancienne. Ce qui fait peur, ce n'est pas le code (c'est un zip qu'on télécharge et qu'on renvoie), mais tout ce qu'il y a autour : la planification qui la lance chaque nuit, l'URL publique qu'utilise votre site, la file qui l'alimente. Une partie de cela est régionale et ne voyage pas. Ce guide vous dit ce qui part avec elle, ce qui ne part pas, et l'ordre sûr : d'abord la copie, ensuite le test, et seulement à la fin l'ancienne.

Avant de commencer : ce que signifie chaque chose

Région
Le groupe de centres de données où vit la fonction (eu-west-1 est l'Irlande, eu-west-3 est Paris, eu-south-2 est l'Espagne). Presque tout dans Lambda est régional : la fonction, ses journaux, ses règles.
Paquet zip
Le fichier contenant le code de la fonction. C'est ce qu'on copie. Les fonctions faites en image de conteneur se déplacent autrement (il faut copier l'image vers un registre ECR de la nouvelle région).
Rôle d'exécution
La permission avec laquelle tourne la fonction (ce qu'elle peut toucher). IAM est global, donc le même rôle sert dans n'importe quelle région : pas besoin d'en créer un autre.
Planification (EventBridge)
La règle « exécute-la toutes les 15 minutes » ou « chaque jour à 3 h 00 ». Elle est régionale : il faut la recréer dans la région de destination, avec la même fréquence.
URL publique
L'adresse web de la fonction. Elle contient la région : dans la nouvelle région, l'adresse change et il faut mettre à jour ce qui l'utilisait.
Couche (layer)
Des bibliothèques partagées que la fonction charge au démarrage. Les couches sont régionales : une couche à vous doit aussi être publiée dans la nouvelle région.

Pas à pas

  1. Faites l'inventaire de ce qui entoure la fonction

    Ouvrez la fonction dans la console Lambda et regardez trois endroits. Dans Configuration → Déclencheurs : ce qui l'exécute (EventBridge, S3, SNS, API Gateway, une file SQS). Dans Configuration → URL de fonction : si elle a une URL publique. Dans Code → Couches : si elle utilise des couches. Notez aussi la mémoire, le délai d'expiration, les variables d'environnement et le rôle d'exécution (Configuration → Autorisations). Avec cette liste, vous saurez ce qui va voyager tout seul et ce que vous devrez refaire.

  2. Décidez ce qui part et ce qui reste

    Part tel quel : le code, le langage (runtime), le handler, la mémoire, le temps maximal, l'architecture, les variables d'environnement, la description et le même rôle d'exécution. Les couches publiques d'AWS existent généralement dans toutes les régions sous le même nom ; les vôtres, non.

    Les planifications se recréent à destination avec la même expression. Les événements EventBridge à motif (par exemple « quand une machine s'arrête ») sont des règles régionales sur ce qui se passe dans cette région : cela n'a pas de sens de les emporter, on en crée de nouvelles si besoin. Les files et flux (SQS, DynamoDB, Kinesis) restent dans leur région et continueront d'appeler l'ancienne fonction. Les notifications S3 n'arrivent qu'aux fonctions de la région du bucket. SNS accepte les abonnements entre régions, mais il faut abonner la nouvelle fonction à la main. API Gateway doit être pointée vers la nouvelle fonction. Et les journaux et métriques restent où ils étaient : la nouvelle fonction démarre avec un historique vide.

  3. Téléchargez le code et créez la fonction dans la nouvelle région

    Dans l'ancienne fonction, Code → Actions → Exporter la fonction → Télécharger le package de déploiement : vous obtenez le zip. Changez de région en haut à droite, Créer une fonction, même nom, même runtime et architecture, et dans Autorisations → Modifier le rôle d'exécution par défaut → Utiliser un rôle existant, choisissez le rôle de l'ancienne. Ensuite Charger à partir de → fichier .zip avec celui que vous avez téléchargé. Dans Configuration générale, mettez la même mémoire et le même délai d'expiration ; dans Variables d'environnement, les mêmes. Attendez que l'état ne soit plus « En attente ».

    Si vous utilisez la CLI, c'est une seule commande à partir du 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. Recréez les planifications et l'URL

    Dans la nouvelle région, ouvrez EventBridge → Règles → Créer une règle avec le même nom et la même expression que l'ancienne (copiez-la depuis la règle d'origine : rate(15 minutes), cron(0 3 * * ? *)). Cible : la nouvelle fonction. EventBridge ajoute tout seul la permission de l'invoquer. Si la règle d'origine était désactivée, laissez la nouvelle désactivée aussi : vous l'activerez quand vous éteindrez l'ancienne.

    Si elle avait une URL publique, Configuration → URL de fonction → Créer une URL de fonction, même type d'authentification. Notez la nouvelle adresse : vous devrez la changer dans le site ou le programme qui l'appelait.

  5. Testez la nouvelle avec les deux allumées

    Pendant que vous vérifiez, les deux fonctions existent et les deux planifications tournent. Si la tâche peut se répéter sans conséquence (un rapport, un nettoyage), laissez les choses ainsi une journée et comparez les journaux CloudWatch des deux. Si la répétition pose problème (elle envoie des courriels, facture, écrit dans une base), créez la nouvelle planification désactivée, testez la nouvelle fonction à la main avec le bouton Tester et un événement réel, et à l'étape suivante faites la bascule d'un coup.

  6. Éteignez l'ancienne, ne la supprimez pas encore

    D'abord, empêchez l'ancienne de s'exécuter : Configuration → Simultanéité → Réserver la simultanéité → 0. Ainsi AWS refuse toutes ses exécutions, mais le code et les règles restent là au cas où vous devriez revenir en arrière en une minute. Désactivez aussi sa règle EventBridge pour qu'elle n'accumule pas d'échecs. Activez la règle de la nouvelle. Changez l'URL dans ce qui l'utilisait et réabonnez SNS ou API Gateway si elle en avait.

  7. Supprimez l'ancienne après une semaine tranquille

    Après une semaine sans frayeur, supprimez l'ancienne règle EventBridge puis la fonction (Actions → Supprimer). Les anciens journaux restent dans CloudWatch Logs : ils ne sont pas supprimés et vous n'en avez pas besoin pour la nouvelle fonction, mais il vaut mieux leur mettre une rétention (par exemple 90 jours) pour qu'ils ne coûtent pas pour toujours.

Ce qui peut mal tourner

La nouvelle fonction se crée mais échoue avec « non autorisé » à l'exécution

Le rôle d'exécution est le même, mais ce que la fonction touche (un bucket, une table, un secret) se trouve dans l'ancienne région ou sa stratégie le limite par région. Vérifiez dans le rôle les conditions aws:RequestedRegion et les ARN avec région, et que ce qu'utilise la fonction existe ou soit accessible depuis la nouvelle région.

À la création, il dit que la couche n'existe pas

Les couches sont régionales. Si c'est la vôtre, publiez-la dans la nouvelle région (Lambda → Couches → Créer une couche avec le même zip) et ajoutez la nouvelle version à la fonction. Si c'est une couche publique d'AWS, cherchez son ARN pour cette région dans la documentation de la couche : la région change et parfois le numéro de version aussi.

Elle s'exécute deux fois chaque nuit

Vous avez les deux planifications activées. C'est attendu pendant les tests ; si vous ne le voulez plus, désactivez la règle de l'ancienne (ou mettez sa simultanéité à 0).

Le site qui utilisait l'URL publique ne fonctionne plus

La nouvelle URL est différente (elle contient la région). Changez l'adresse dans le site. Si vous ne pouvez pas y toucher tout de suite, laissez l'ancienne allumée un peu plus longtemps et faites le changement calmement.

La file SQS continue d'appeler l'ancienne

Les files ne changent pas de région. Options : laisser l'ancienne fonction comme « pont » qui renvoie vers la nouvelle, créer une nouvelle file dans la région de destination et faire changer d'adresse à ce qui écrit dans la file, ou accepter que cette partie reste où elle est.

Et vers un autre compte AWS ?

C'est le même processus avec une différence importante : le rôle d'exécution vit dans le compte, donc dans le nouveau compte la fonction ne peut pas utiliser celui de l'ancienne. Créez-y un rôle pour Lambda (ou utilisez celui que vous avez déjà) et, si la fonction touche S3, des bases de données ou des files, donnez-lui ces permissions : la copie se crée bien mais échouera à l'exécution tant que le rôle ne pourra pas faire ce que fait le code. Les variables d'environnement se copient telles quelles : si elles contiennent des adresses ou des clés de l'ancien compte, changez-les. Et les files, buckets et API ne changent pas de compte : il faut les recréer ou les reconnecter.

Dans Simplio, « Déplacer vers un autre compte » demande une clé d'accès de l'autre compte enregistrée dans Clés d'accès, vérifie d'abord qu'elle a les permissions pour créer des fonctions, et crée la copie avec le rôle simplio-lambda-ejecucion de ce compte (celui du script de l'Aide), en vous prévenant qu'il n'écrit que des journaux et qu'il faut élargir ce rôle si la fonction a besoin de plus.

Dans Simplio

Dans Simplio, sur la carte de la fonction, il y a un bouton Déplacer de région…. Vous choisissez la région, vous voyez d'avance ce qui part (code, réglages, rôle, planifications) et ce qui ne part pas (files, notifications S3, journaux), vous confirmez avec le double facteur et la copie apparaît avec ses planifications recréées, en pause si elles l'étaient. L'originale n'est pas touchée : sur sa carte reste l'avis « Copiée vers … le … ; l'originale reste active » avec les boutons Mettre l'originale en pause et Supprimer l'originale, qui ne supprime que si la copie existe et est active. Si quelque chose échoue en chemin, Simplio défait ce qui a été créé à destination et vous l'explique en clair.

La même chose, dans AWS et dans Simplio

Dans la console AWSDans Simplio
Savoir ce qui voyage et ce qui ne voyage pasPasser en revue à la main déclencheurs, URL, couches et rôle sur plusieurs écransUn aperçu sur la même carte : ce qui part, ce qui se recrée et ce qu'il faut refaire, avant de toucher à quoi que ce soit
Créer la copieTélécharger le zip, créer la fonction, répéter mémoire, délai, variables et rôle ; créer les règles une par uneUn bouton « Déplacer de région… » : copie, attend qu'elle soit active, recrée les planifications avec la même fréquence et l'URL si elle en avait une
Si quelque chose échoue à mi-cheminIl reste une fonction à moitié créée et des règles orphelines à nettoyerTout ce qui a été créé à destination est défait et l'originale n'est pas touchée
Éteindre et supprimer l'ancienneSimultanéité à 0, désactiver les règles, supprimer ensuiteDeux boutons sur la carte de l'originale : « Mettre l'originale en pause » (réversible) et « Supprimer l'originale », qui n'agit que si la copie est active

Essayer gratuitement 15 jours Voir comment ça marche

Tout cela, sans la console AWS

Simplio est un panneau en français pour gérer vos comptes AWS : machines, copies programmées, bases de données, domaines, e-mail et ce que vous facture AWS, avec des autorisations par personne et la double authentification. Sans rien installer sur vos serveurs.

Commencez gratuitement pendant 15 jours, sans carte

Déjà client ? Espace clients.