Comment migrer une fonction Lambda vers un autre compte AWS ou une autre région à l'aide d'un fichier AWS SAM ?

Dernière mise à jour : 03/02/2021

Je dois déplacer une fonction AWS Lambda d'un compte AWS (ou région AWS) à un autre. Comment puis-je le faire en utilisant un fichier AWS Serverless Application Model (AWS SAM) ?

Brève description

Pour migrer une fonction Lambda vers un autre compte AWS ou une autre région à l'aide d'un fichier AWS SAM, procédez comme suit :

1.    Téléchargez le fichier AWS SAM pour la fonction Lambda ainsi que son package de déploiement.

2.     Chargez le package de déploiement de la fonction Lambda vers un compartiment Amazon Simple Storage Service (Amazon S3) dans la région AWS vers laquelle vous migrez la fonction.

3.    Utilisez le fichier AWS SAM et AWS CloudFormation pour déployer et gérer une nouvelle fonction Lambda dans un autre compte AWS ou une autre région.

Pour plus d'informations, consultez Déploiement d'une application Hello World.

Remarque : vous pouvez également migrer une fonction Lambda à l'aide de la console Lambda ou de l'interface de ligne de commande AWS (AWS CLI).

Résolution

Télécharger le fichier AWS SAM de la fonction Lambda et son package de déploiement

1.    Dans la console Lambda, choisissez Fonctions dans le panneau de gauche.

2.    Choisissez le nom de la fonction Lambda que vous souhaitez migrer.

3.    Dans la fenêtre de fonction Lambda, choisissez Actions, puis Exporter la fonction.

4.    Dans la fenêtre Exporter la fonction, choisissez Télécharger le fichier AWS SAM.

5.    Une fois le fichier AWS SAM téléchargé, revenez à la fenêtre Exporter la fonction et choisissez Télécharger le package de déploiement pour télécharger le package de déploiement.

Chargez le package de déploiement de la fonction Lambda vers un compartiment Amazon S3 situé dans la région AWS vers laquelle vous migrez la fonction

1.    Connectez-vous à la console Amazon S3 à l'aide du compte AWS vers lequel vous souhaitez migrer la fonction Lambda.

2.    Dans la liste Compartiments, choisissez le nom du compartiment S3 dans lequel vous souhaitez charger vos fichiers.

3.    Choisissez Upload (Charger).

4.    Sur la page Charger, choisissez Ajouter des fichiers.

5.    Choisissez le package de déploiement de la fonction Lambda que vous avez téléchargé. Ensuite, choisissez Ouvrir.

6.    Choisissez Charger.

7.    Choisissez Fichiers et dossiers, puis sélectionnez le nom du fichier du package de déploiement pour l'ouvrir.

8.    Dans la section Object Overview (Vue d'ensemble de l'objet) du fichier, notez la valeur S3 URI (URI S3), qui est l'emplacement du chemin S3 pour le package de déploiement. Enregistrez la valeur pour l'utiliser à l'étape suivante.

Utiliser le fichier AWS SAM et AWS CloudFormation pour déployer et gérer une nouvelle fonction Lambda dans un autre compte AWS ou une autre région

1.    Ouvrez le fichier AWS SAM de la fonction Lambda que vous avez téléchargé.

Exemple de code de fichier AWS SAM de la fonction Lambda

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: An AWS Serverless Specification template describing your function.
Resources:
  MyLambdaFunction:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: lambda_function.lambda_handler
      Runtime: python3.6
      CodeUri: .                #S3 bucket Link
      Description: ''
      MemorySize: 128
      Timeout: 6
      Role: 'arn:aws:iam::733097455070:role/service-role/FirstLambdaPolicy'    #Replace
      Environment:
        Variables:
          homelocation: .tmp
      Tags:
        sampleTag: test
      Tracing: Active

2.    Après CodeUri, remplacez le point (.) avec l'emplacement du chemin S3 du package de déploiement Lambda que vous avez récupéré à l'étape précédente.

Important : assurez-vous que l'utilisateur IAM qui crée la pile CloudFormation dispose de l'autorisation 's3:GetObject' pour cet objet S3.

3.    Pour migrer une fonction vers un autre compte AWS, procédez comme suit :
Pour la valeur Rôle :, supprimez l'ARN du rôle IAM existant. Ensuite, remplacez la valeur par l'ARN du rôle IAM dans le deuxième compte AWS.
Pour les fonctions comportant des couches, ajoutez une autorisation dans la couche pour le deuxième compte AWS qui permet à cette couche d'utiliser la couche du premier compte. Ou, remplacez l'ARN de la couche Lambda dans le fichier AWS SAM par l'ARN de la couche Lambda dans le deuxième compte AWS.

-ou-

Pour migrer une fonction vers une autre région AWS, procédez comme suit :
Pour la valeur Rôle :, continuez à utiliser l'ARN du rôle IAM existant.
Pour les fonctions comportant des couches, remplacez l'ARN de la couche Lambda par l'ARN de la couche Lambda dans la deuxième région AWS.

Important : pour les fonctions dans un virtual private cloud (VPC), remplacez les valeurs de SecurityGroupdIds et SubnetIds par les ressources du deuxième compte AWS ou région.

4.    Pour les fonctions avec des sources d'événements, supprimez le code permettant de recréer les sources d'événements dans le deuxième compte AWS ou la deuxième région du fichier AWS SAM. Remplacez ensuite les valeurs après Événements : par les sources d'événements dans le deuxième compte AWS ou la deuxième région.

5.    Utilisez le fichier AWS SAM modifié pour créer une pile AWS CloudFormation dans le deuxième compte ou région AWS vers lequel vous souhaitez migrer la fonction.

Remarque : après avoir créé la pile AWS CloudFormation, la fonction Lambda migrée apparaît dans votre console Lambda.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?