Je dois déplacer une fonction AWS Lambda d'un compte ou d'une région AWS vers un autre compte ou une autre région AWS.
Brève description
Pour migrer une fonction Lambda vers un autre compte ou une autre région AWS, utilisez un fichier Modèle d'application sans serveur AWS (AWS SAM) :
- Téléchargez le fichier AWS SAM pour la fonction Lambda ainsi que son package de déploiement.
- Téléchargez le package de déploiement de la fonction Lambda dans un compartiment Amazon Simple Storage Service (Amazon S3) de la région vers laquelle vous migrez la fonction.
- Utilisez le fichier AWS SAM et AWS CloudFormation pour déployer et gérer une nouvelle fonction Lambda dans un autre compte ou une autre région AWS.
Pour plus d'informations, consultez la section Déploiement d'une application Hello World.
Remarque : vous pouvez également migrer une fonction Lambda dans la console Lambda ou dans l'interface de la ligne de commande AWS (AWS CLI).
Résolution
Téléchargez le fichier AWS SAM de la fonction Lambda et son package de déploiement
- Dans la console Lambda, choisissez Fonctions dans le panneau de gauche.
- Choisissez le nom de la fonction Lambda que vous souhaitez migrer.
- Dans la fenêtre de la fonction Lambda, choisissez Actions, puis sélectionnez Exporter la fonction.
- Dans la fenêtre de la fonction d'exportation, choisissez Télécharger le fichier AWS SAM.
- Une fois le fichier AWS SAM téléchargé, revenez à la fenêtre Fonction d'exportation, puis choisissez Télécharger le package de déploiement pour télécharger le package de déploiement.
Téléchargez le package de déploiement de la fonction Lambda dans un compartiment Amazon S3 situé dans la région AWS vers laquelle vous migrez la fonction
- Connectez-vous à la console Amazon S3 à l'aide du compte AWS vers lequel vous souhaitez migrer la fonction Lambda.
- Dans la liste Compartiments, choisissez le nom du compartiment S3 dans lequel vous souhaitez charger vos fichiers.
- Choisissez Charger.
- Sur la page de téléchargement, choisissez Ajouter des fichiers.
- Choisissez le package de déploiement de la fonction Lambda que vous avez téléchargé. Choisissez ensuite Ouvrir.
- Choisissez Charger.
- Choisissez Fichiers et dossiers. Pour ouvrir le package de déploiement, sélectionnez le nom de fichier du package de déploiement.
- Dans la section Vue d'ensemble des objets du fichier, notez la valeur de l'URI S3. Il s'agit de l'emplacement du chemin S3 pour le package de déploiement. Enregistrez la valeur pour l'utiliser à l'étape suivante.
Utilisez le fichier AWS SAM et AWS CloudFormation pour déployer et gérer une nouvelle fonction Lambda dans un autre compte ou une autre région AWS
-
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
-
Après CodeURI, remplacez le **point (.)**par 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 AWS Identity and Access Management (IAM) qui crée la pile CloudFormation dispose de l'autorisation « s3:GetObject » pour cet objet S3.
-
Migrez une fonction vers un autre compte AWS :
Pour la valeur Rôle :, supprimez l'ARN du rôle IAM existant. Remplacez ensuite 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. Vous pouvez également remplacer 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-
Migrer une fonction vers une autre Région :
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 d'un cloud privé virtuel (VPC), remplacez les valeurs de SecurityGroupdIds et SubnetIds par les ressources du deuxième compte ou région AWS.
-
Pour les fonctions comportant des sources d'événements, la configuration des sources d'événements n'est pas exportée dans le fichier AWS SAM téléchargé à partir de la fonction Lambda. Pour faire correspondre la source d'événement d'origine aux valeurs des ressources de votre deuxième compte ou région, consultez la syntaxe de la propriété « événements». Ajoutez ensuite les événements au fichier AWS SAM de votre deuxième compte ou région AWS.
-
Utilisez le fichier AWS SAM modifié pour créer une pile AWS CloudFormation dans le deuxième compte ou la seconde région AWS où 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.