Cours
L'un des services AWS les plus importants à connaître est AWS Lambda, un service de calcul sans serveur qui exécute du code en réponse à des événements et gère automatiquement les ressources sous-jacentes.
Avec l'adoption croissante de Lambda, il est fréquent de rencontrer des questions relatives à AWS Lambda lors d'entretiens techniques.
Ce guide facilite la préparation à un entretien AWS Lambda en fournissant une liste de questions et réponses sélectionnées. Nous abordons les notions fondamentales et approfondissons des scénarios avancés et pratiques.
Si vous souhaitez en savoir plus sur AWS, veuillez consulter ce cours sur la technologie et les services cloud AWS.
Pourquoi AWS ?
Avant d'examiner les questions et réponses de l'entretien, il est important de comprendre pourquoi le cloud AWS est la principale plateforme de référence. Cela pourrait constituer une question à part entière lors de l'entretien.
Commençons par examiner le graphique suivant :

Source (Statista)
Le graphique illustre la position dominante d'AWS sur le marché mondial des services d'infrastructure cloud au deuxième trimestre 2023. Avec une part de marché de 32 %, AWS est clairement en tête, loin devant son concurrent le plus proche, Microsoft Azure, qui détient 22 % du marché. Bien que d'autres acteurs majeurs tels que Google Cloud (11 %) et Alibaba Cloud (4 %) contribuent au marché, leurs parts sont insignifiantes par rapport à celles d'AWS et d'Azure.
Le chiffre d'affaires total généré par les services d'infrastructure cloud au deuxième trimestre 2023, qui s'élève à 65 milliards de dollars, souligne encore davantage l'importance croissante et la signification financière de ce marché. La position dominante d'AWS dans ce secteur en pleine expansion renforce son importance stratégique pour les entreprises à la recherche de solutions cloud fiables et évolutives.
Si vous souhaitez en savoir plus sur les différences entre les différents fournisseurs de services cloud, veuillez consulter cette fiche comparative des services AWS, Azure et GCP.
Bien que les aspects financiers soient importants, l'attrait d'AWS va au-delà de sa part de marché et englobe une vaste sélection de services, la fiabilité, l'évolutivité, la portée mondiale, une sécurité robuste, l'innovation continue et une communauté solidaire. Ces facteurs combinés font de l'expertise AWS une compétence très recherchée dans le secteur technologique, offrant de nombreuses opportunités de carrière à ceux qui maîtrisent cette plateforme cloud de premier plan.
Examinons quelques questions d'entretien.
Devenez ingénieur en données
Questions d'entretien de base sur AWS Lambda
Commençons par les bases. Que vous soyez novice dans AWS Lambda ou que vous souhaitiez simplement rafraîchir vos connaissances, ces principes fondamentaux vous prépareront à approfondir vos connaissances sur les capacités de Lambda.
1. Qu'est-ce qu'AWS Lambda ?
AWS Lambda est un service de calcul sans serveur qui vous permet d'exécuter du code sans avoir à provisionner ni à gérer de serveurs. Lambda exécute le code uniquement lorsque cela est nécessaire et s'adapte automatiquement, de quelques requêtes par jour à des milliers par seconde.
2. Quels sont les principaux composants d'une fonction Lambda ?
Les principaux composants d'une fonction Lambda sont les suivants :
- Responsable : Il s'agit du point d'entrée de notre fonction, une méthode de notre code qui traite l'événement d'invocation. Considérez-la comme la fonction principale de notre code Lambda.
- Événement : Il s'agit des données d'entrée au format JSON qui déclenchent l'exécution de la fonction. Il contient des informations sur ce qui a déclenché l'appel de fonction.
- Context: Il s'agit d'un objet contenant des informations d'exécution sur l'environnement d'exécution de la fonction. Il comprend des informations telles que le nom de la fonction, la version, les limites de mémoire, l'ID de la requête et le temps d'exécution restant.
- Variables d'environnement : Il s'agit de paires clé-valeur que vous pouvez définir pour configurer le comportement de votre fonction Lambda sans modifier le code lui-même. Ils sont fréquemment utilisés pour stocker des clés API, des identifiants de base de données ou d'autres paramètres.
3. Quelles langues Lambda prend-il en charge ?
Lambda prend en charge nativement Node.js, Python, Ruby, Java, Go, C# et PowerShell. Cela signifie que nous pouvons écrire nos fonctions Lambda directement dans ces langages sans configuration supplémentaire.
De plus, Lambda nous permet d'utiliser des environnements d'exécution personnalisés, ce qui nous offre la flexibilité nécessaire pour regrouper notre code de fonction et nos dépendances dans une image de conteneur. Cela permet de prendre en charge pratiquement tous les langages de programmation, ce qui nous permet de sélectionner l'outil le mieux adapté à nos besoins.
4. Comment créer une fonction Lambda ?
Il existe plusieurs méthodes pour créer des fonctions Lambda :
|
Méthode |
Description |
Idéal pour |
|
Lambda Console |
Veuillez écrire le code directement dans l'éditeur du navigateur. |
Fonctions simples, tests rapides |
|
Paquet de déploiement |
Veuillez regrouper le code et les dépendances dans une archive ZIP et procéder au téléchargement. |
Projets de grande envergure, fonctions complexes |
|
Image du conteneur |
Fonction de package en tant qu'image de conteneur Docker. |
Environnements d'exécution personnalisés, configurations spécifiques |
|
Infrastructure-as-Code |
Définissez les fonctions et les ressources dans un code déclaratif à l'aide d'AWS SAM, CloudFormation ou CDK. |
Gestion d'applications sans serveur complexes, automatisation |
5. Quelles sont les différentes méthodes pour invoquer une fonction Lambda ?
Nous pouvons invoquer les fonctions Lambda de plusieurs manières :
- Invocation synchrone : Le client attend que la fonction s'exécute et renvoie une réponse.
- Invocation asynchrone : Le client n'attend pas de réponse : Lambda exécute la fonction en arrière-plan.
- Cartographie des sources d'événements : Lambda interroge automatiquement des services tels que DynamoDB ou Kinesis et invoque des fonctions en fonction des événements.
- Autres méthodes : Il s'agit notamment de l'API Gateway, des SDK AWS ou des invocations planifiées via Amazon EventBridge.
Questions d'entretien de niveau intermédiaire sur AWS Lambda
1. Comment pouvons-nous déployer des dépendances avec le code Lambda ?
Il existe plusieurs options pour intégrer des dépendances au code Lambda :
- Inclusion directe : Pour les langages interprétés, nous pouvons inclure les fichiers de dépendance avec notre code de fonction dans le package de déploiement .zip.
- Couches Lambda : Pour les langages compilés ou les dépendances plus importantes, nous pouvons utiliser les couches Lambda pour regrouper et partager séparément les dépendances communes entre les fonctions.
- Images de conteneurs : Nous pouvons également intégrer les dépendances dans des images de conteneur avec le code de la fonction Lambda et un runtime personnalisé.
2. Comment pouvons-nous optimiser les performances des fonctions Lambda ?
Nous disposons de plusieurs options pour optimiser les fonctions Lambda :
- Allocation de mémoire : Il est essentiel de choisir la taille de mémoire appropriée afin d'équilibrer les coûts et les performances. Des outils tels qu'AWS Lambda Power Tuning peuvent aider à déterminer la configuration optimale.
- Dimensions de l'emballage : Les paquets de fonctions plus petits permettent des démarrages à froid plus rapides (le temps nécessaire à une fonction Lambda pour s'initialiser lors de sa première invocation). Réduisez la taille du paquet en supprimant les dépendances inutiles et en compressant le code.
- Lambda SnapStart : Cette fonctionnalité pré-initialise les environnements de fonction, réduisant ainsi considérablement les temps de démarrage à froid pour certains environnements d'exécution.
- Concurrence provisionnée : Configurez la concurrence provisionnée pour maintenir les instances de fonction actives, garantissant ainsi des temps de réponse cohérents pour les charges de travail critiques.
- Délais d'attente et limites de concurrence : Définissez des délais d'expiration appropriés et une concurrence réservée afin d'éviter les fonctions incontrôlables et de maintenir un environnement Lambda stable.
3. Quels outils pouvez-vous utiliser pour surveiller et déboguer les fonctions Lambda ?
Lambda transmet automatiquement les métriques à Amazon CloudWatch, notamment le nombre de requêtes, la latence, les taux d'erreur, et bien plus encore.
Nous pouvons utiliser CloudWatch Logs pour accéder aux journaux générés par notre code de fonction et le runtime Lambda.
Pour suivre et dépanner les performances des applications Lambda distribuées, nous pouvons utiliser AWS X-Ray.
4. À quoi servent les extensions Lambda ?
Les extensions Lambda nous permettent d'améliorer nos fonctions en les intégrant à des outils de surveillance, d'observabilité, de sécurité et de gouvernance.
Les extensions peuvent s'exécuter en tant que processus distincts dans l'environnement d'exécution afin de collecter des informations de diagnostic ou d'envoyer des données vers des destinations personnalisées.
Parmi les exemples, on peut citer l'extension Datadog pour les métriques et les traces, ainsi que l'extension AWS AppConfig pour les mises à jour de configuration dynamiques.
5. Qu'est-ce qu'un mappage de source d'événement ?
Un mappage de source d'événements est une ressource Lambda qui lit les éléments d'une source d'événements et invoque une fonction.
Nous pouvons utiliser les mappages de sources d'événements pour traiter les éléments provenant des flux Amazon DynamoDB, des flux Amazon Kinesis, des files d'attente Amazon MQ, d'Apache Kafka autogéré, des files d'attente Amazon SQS, etc.
Lambda fournit un mécanisme de sondage permettant de lire des lots d'enregistrements à partir des sources d'événements et d'invoquer une fonction.
Questions d'entretien avancées sur AWS Lambda
1. Comment contrôlez-vous l'accès aux fonctions Lambda ?
AWS Lambda utilise IAM (Identity and Access Management) pour contrôler l'accès à deux niveaux :
- Les politiques basées sur les ressources spécifient quels comptes, services et ressources AWS sont autorisés à invoquer la fonction.
- Le rôle d'exécution de la fonction détermine les services et ressources AWS auxquels le code de la fonction peut accéder. Conformément au principe du moindre privilège, ces politiques doivent être aussi restrictives que possible tout en permettant à la fonction d'accomplir les tâches qui lui sont assignées.
2. Comment minimiser les démarrages à froid dans Lambda ?
Les démarrages à froid se produisent lorsque Lambda doit initialiser un nouvel environnement d'exécution pour traiter une demande d'invocation. Afin de minimiser les démarrages à froid et d'améliorer la réactivité de notre fonction Lambda, nous pouvons mettre en œuvre plusieurs stratégies :
- Veuillez utiliser SnapStart : Cette fonctionnalité (disponible pour certains environnements d'exécution) nous permet de conserver les environnements initialisés, ce qui réduit considérablement les temps de démarrage pour les invocations suivantes.
- Activer la concurrence provisionnée : En conservant un ensemble d'environnements initialisés prêts à l'emploi, nous pouvons éliminer les démarrages à froid pour les charges de travail prévisibles.
- Optimiser la taille du paquet : Réduire la taille de notre ensemble de fonctions en supprimant les dépendances inutiles et en optimisant le code peut accélérer le processus d'initialisation.
- Choix de la langue : Opter pour des langages tels que Go ou Rust, réputés pour leurs temps de démarrage plus rapides que les langages JVM, peut également contribuer à réduire les délais de démarrage à froid.
- Réutilisation du contexte d'exécution : En séparant le code de notre fonction Lambda de la logique de configuration initiale, nous pouvons réutiliser le contexte d'exécution entre les invocations, ce qui réduit encore davantage la charge.
3. Quelles sont les meilleures pratiques courantes en matière de sécurité des API pour Lambda ?
Lors de l'exposition des fonctions Lambda via API Gateway, voici quelques bonnes pratiques en matière de sécurité :
- Utilisation des autorisateurs IAM ou Lambda pour authentifier et autoriser les requêtes.
- Activation des pools d'utilisateurs Amazon Cognito pour la gestion des utilisateurs.
- Définir des politiques de ressources pour autoriser ou refuser l'accès en fonction des propriétés de la requête, telles que les adresses IP sources.
- Configuration de mTLS pour une communication sécurisée entre le client et le serveur.
- Utilisation d'AWS WAF pour se prémunir contre les attaques Web courantes visant les API.
4. Quelles sont les différences entre les images de conteneur Lambda et les paquets de déploiement .zip ?
Les images de conteneur Lambda permettent de regrouper le code fonctionnel et les dépendances dans un format de conteneur compatible OCI. Comparons les images de conteneur aux paquets de déploiement .zip :
|
Caractéristique |
Images de conteneurs |
Packages de déploiement .zip |
|
Flexibilité d'exécution |
Veuillez utiliser notre propre environnement d'exécution (langage ou version au choix). |
Limité aux environnements d'exécution prédéfinis de Lambda |
|
Taille du déploiement |
Jusqu'à 10 Go |
Jusqu'à 250 Mo (décompressé) |
|
Déploiement et démarrage à froid |
Déploiements plus lents et latence de démarrage à froid potentiellement plus élevée |
Déploiements plus rapides et latence de démarrage à froid généralement réduite |
|
Outillage et Flux de travail |
Intégration transparente avec nos outils et flux de travail existants pour les conteneurs |
Des outils supplémentaires peuvent être nécessaires pour la gestion des dépendances et le déploiement. |
|
Idéal pour |
Applications présentant d'importantes dépendances ou des exigences d'exécution personnalisées |
Applications plus petites et celles compatibles avec les environnements d'exécution prédéfinis de Lambda |
5. Les fonctions Lambda peuvent-elles appeler d'autres fonctions Lambda ?
Oui, les fonctions Lambda peuvent invoquer d'autres fonctions directement à l'aide du SDK AWS. Les cas d'utilisation courants comprennent l'orchestration des fonctions, l'agrégation des résultats de plusieurs fonctions et la répartition du traitement des événements.
Lorsqu'une fonction Lambda en invoque une autre, la politique basée sur les ressources de la fonction invoquée doit explicitement accorder l'accès pour autoriser l'invocation à partir de la fonction appelante.
Questions pratiques pour un entretien sur AWS Lambda
1. Comment mettre en œuvre une API REST simple à l'aide de Lambda et d'API Gateway ?
Nous pouvons mettre en œuvre une API REST simple à l'aide de Lambda et d'API Gateway en suivant les étapes suivantes :
- Veuillez créer une fonction Lambda : Développez une fonction Lambda qui reçoit les entrées de l'API Gateway sous forme d'objet événement et renvoie un objet réponse contenant des données et des codes d'état.
- Créer une passerelle API: Dans l'API Gateway, nous créons une nouvelle API REST avec une ressource et une méthode correspondant au chemin d'accès de l'API et à la méthode HTTP.
- Veuillez configurer l'intégration: Nous configurons le type d'intégration de la méthode en tant que proxy Lambda et spécifions la fonction à invoquer.
- Déployez l'API: Veuillez déployer l'API afin de générer un point de terminaison URL public pour l'accès.
- Veuillez effectuer des tests approfondis : Nous pouvons utiliser des outils tels que cURL ou Postman pour nous assurer que l'API fonctionne correctement, la fonction Lambda traitant les requêtes et renvoyant les réponses appropriées.
2. Comment configurez-vous une fonction Lambda pour traiter les événements provenant d'un compartiment S3 ?
Nous pouvons configurer une fonction Lambda pour traiter les événements provenant d'un compartiment S3 en suivant les étapes ci-dessous :
- Nous créons une fonction Lambda avec les autorisations appropriées pour accéder au compartiment S3.
- Dans la console S3, nous configurons une notification d'événement sur le compartiment source.
- Nous sélectionnons les types d'événements qui déclenchent la notification, tels que la création ou la suppression d'un objet.
- Nous désignons la fonction Lambda comme destination de la notification.
- Nous effectuons des tests en réalisant des actions sur le compartiment S3 qui correspondent aux types d'événements configurés.
- Nous vérifions que la fonction Lambda est invoquée avec un événement contenant les détails de l'action S3.
3. Comment configurez-vous une fonction Lambda pour enregistrer des données dans un tableau DynamoDB ?
Nous pouvons configurer une fonction Lambda pour enregistrer des données dans un tableau DynamoDB en suivant ces six étapes :
- Nous créons un tableau DynamoDB avec une clé primaire appropriée et tous les index secondaires requis.
- Nous créons un rôle IAM pour la fonction Lambda avec les autorisations nécessaires pour accéder à DynamoDB.
- Nous créons une fonction Lambda et y associons le rôle IAM.
- Nous utilisons le SDK DynamoDB pour créer une instance client avec le nom de la table.
- Nous utilisons la méthode
put_itempour inscrire des éléments dans le tableau, en spécifiant les attributs clés et d'autres champs. - Veuillez tester la fonction à l'aide d'événements types et utiliser les requêtes DynamoDB pour vérifier que les données sont correctement enregistrées.
4. Comment implémentez-vous une fonction Lambda planifiée ?
Nous pouvons mettre en œuvre une fonction Lambda planifiée en suivant ces étapes :
- Veuillez créer une fonction Lambda pour exécuter la tâche souhaitée selon un calendrier défini.
- Veuillez ouvrir la console Amazon EventBridge et créer une nouvelle règle.
- Définissez une expression de planification pour la règle à l'aide de la syntaxe rate ou cron.
- Veuillez sélectionner la fonction Lambda comme cible pour la règle.
- Veuillez enregistrer la règle et la tester en attendant le prochain événement planifié.
- Vérifiez l'exécution de la fonction dans les métriques et les journaux CloudWatch.
5. Comment transférer progressivement le trafic vers une nouvelle version d'une fonction Lambda ?
Pour transférer le trafic vers une nouvelle version d'une fonction Lambda, nous procédons comme suit :
- Veuillez publier une nouvelle version de la fonction Lambda avec le code mis à jour.
- Veuillez créer un alias qui pointe vers l'ancienne version stable.
- Veuillez mettre à jour l'alias afin de répartir le trafic entre l'ancienne et la nouvelle version en utilisant des pondérations (par exemple, 90/10).
- Ajustez progressivement les pondérations afin de transférer davantage de trafic vers la nouvelle version tout en surveillant les indicateurs.
- Une fois satisfait, veuillez mettre à jour l'alias afin de rediriger 100 % du trafic vers la nouvelle version.
- Veuillez répéter le processus pour la prochaine mise à jour de la fonction, en considérant la version précédente comme la nouvelle version stable.
Conclusion
Ces questions fréquentes lors des entretiens AWS Lambda évaluent la compréhension des candidats concernant les concepts fondamentaux de Lambda, les meilleures pratiques et les modèles d'utilisation pratiques.
Il est essentiel de garder à l'esprit que l'expérience pratique acquise lors de la création et de l'exploitation d'applications Lambda est inestimable pour consolider ces concepts.
Pour en savoir plus, veuillez consulter ces deux cours :
Obtenez une certification pour le poste de Data Engineer de vos rêves
Nos programmes de certification vous aident à vous démarquer et à prouver aux employeurs potentiels que vos compétences sont adaptées à l'emploi.


Scientifique de données aux multiples talents qui aime partager ses connaissances et rendre service aux autres, Zoumana est un créateur de contenu sur YouTube et un rédacteur technique de premier plan sur Medium. Il prend plaisir à parler, à coder et à enseigner. Zoumana est titulaire de deux masters. Le premier en informatique avec une spécialisation en apprentissage automatique à Paris, en France, et le second en science des données à l'université Texas Tech aux États-Unis. Son parcours professionnel a débuté en tant que développeur de logiciels au sein du Groupe OPEN en France, avant de rejoindre IBM en tant que consultant en apprentissage automatique, où il a développé des solutions d'IA de bout en bout pour les compagnies d'assurance. Zoumana a rejoint Axionable, la première startup d'IA durable basée à Paris et Montréal. Il y a occupé le poste de Data Scientist et a mis en œuvre des produits d'IA, principalement des cas d'utilisation NLP, pour des clients en France, à Montréal, à Singapour et en Suisse. En outre, 5 % de son temps a été consacré à la recherche et au développement. Il travaille actuellement en tant que scientifique de données senior à l'IFC, le groupe de la Banque mondiale.