Accéder au contenu principal

Les 20 meilleures questions d'entretien sur AWS Lambda et leurs réponses en 2024

AWS Lambda est un service de calcul sans serveur et un sujet de plus en plus courant dans les entretiens techniques. Que vous soyez novice en matière de cloud computing ou un pro chevronné, il est essentiel de comprendre AWS Lambda.
Actualisé 14 nov. 2024  · 12 min de lecture

L'un des services AWS les plus importants à comprendre est AWS Lambda - unservice 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 courant de rencontrer des questions sur AWS Lambda lors d'entretiens techniques.

Ce guide simplifie la préparation aux entretiens AWS Lambda en fournissant une liste de questions et de réponses. Nous couvrons les bases et nous approfondissons les scénarios avancés et pratiques.

Si vous souhaitez en savoir plus sur AWS, consultez ce cours sur la technologie et les services de cloud AWS.

Pourquoi AWS ?

Avant d'explorer 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 - cette question pourrait elle-même faire l'objet d'un entretien.

Commençons par examiner le graphique suivant :

Source(Statista)

Le graphique illustre la domination 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 le leader incontesté, loin devant son concurrent le plus proche, Microsoft Azure, qui détient 22 % du marché. Si d'autres acteurs majeurs comme Google Cloud (11 %) et Alibaba Cloud (4 %) contribuent au marché, leurs parts font pâle figure face à AWS et 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 l'importance croissante de ce marché et son poids financier. La position de leader d'AWS dans ce secteur florissant renforce son importance stratégique pour les entreprises à la recherche de solutions cloud fiables et évolutives.

Si vous souhaitez en savoir plus sur la comparaison entre les différents fournisseurs de cloud, consultez cette antisèche sur la comparaison des services AWS, Azure et GCP.

Si les aspects financiers sont importants, l'attrait d'AWS va au-delà de la part de marché, englobant une vaste sélection de services, la fiabilité, l'évolutivité, la portée mondiale, une sécurité solide, 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 de la technologie, offrant de nombreuses opportunités de carrière pour ceux qui maîtrisent cette plateforme cloud de premier plan.

Jetons un coup d'œil à quelques questions d'entretien !

Devenez ingénieur en données

Devenez un ingénieur de données grâce à l'apprentissage avancé de Python
Commencez À Apprendre Gratuitement

Questions d'entretien de base sur AWS Lambda

Commençons par les bases. Que vous soyez novice en matière d'AWS Lambda ou que vous souhaitiez simplement vous rafraîchir la mémoire, ces principes fondamentaux vous prépareront à plonger plus profondément dans les capacités de Lambda.

AWS Lambda est un service de calcul sans serveur qui vous permet d'exécuter du code sans provisionner ni gérer de serveurs. Lambda n'exécute le code qu'en cas de besoin et évolue automatiquement, de quelques requêtes par jour à des milliers par seconde.

Les principaux composants d'une fonction Lambda sont les suivants :

  • Manipulateur : 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-le comme la fonction "principale" de notre code Lambda.
  • Événement : Il s'agit des données d'entrée formatées JSON qui déclenchent l'exécution de la fonction. Il contient des informations sur ce qui a déclenché l'appel de fonction.
  • Contexte : Il s'agit d'un objet contenant des informations sur l'environnement d'exécution de la fonction. Il comprend des détails tels que le nom de la fonction, la version, les limites de mémoire, l'identifiant 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 souvent utilisés pour stocker des clés d'API, des identifiants de base de données ou d'autres paramètres.

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.

En outre, Lambda nous permet d'utiliser des runtimes personnalisés, offrant ainsi la flexibilité de packager 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 choisir l'outil qui répond le mieux à nos besoins.

Il existe plusieurs façons de créer des fonctions Lambda :

Méthode

Description

Mieux adapté pour

Console Lambda

Écrivez du code directement dans l'éditeur du navigateur.

Des fonctions simples, des tests rapides

Paquet de déploiement

Regroupez le code et les dépendances dans une archive ZIP et téléchargez-la.

Projets de plus grande envergure, fonctions complexes

Image du conteneur

Fonction de paquetage en tant qu'image de conteneur Docker.

Temps d'exécution personnalisés, configurations spécifiques

Infrastructure-as-Code

Définir des fonctions et des ressources dans un code déclaratif à l'aide d'AWS SAM, CloudFormation ou CDK.

Gestion d'applications complexes sans serveur, automatisation

Les fonctions Lambda peuvent être invoquées de différentes manières :

  1. Invocation synchrone : Le client attend que la fonction se termine et renvoie une réponse.
  2. Invocation asynchrone : Le client n'attend pas de réponse - Lambda exécute la fonction en arrière-plan.
  3. 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.
  4. Autres méthodes : Il s'agit notamment de API Gateway, de SDK AWS ou d'invocations programmées via Amazon EventBridge.

Questions d'entretien intermédiaires sur AWS Lambda

Il existe quelques options pour conditionner les dépendances avec le code Lambda :

  • Inclusion directe : Pour les langues interprétées, nous pouvons placer des fichiers de dépendance avec notre code de fonction dans le paquet de déploiement .zip.
  • Couches lambda : Pour les langages compilés ou les dépendances plus importantes, nous pouvons utiliser des couches Lambda pour empaqueter séparément et partager les dépendances communes entre les fonctions.
  • Images des conteneurs : Nous pouvons également empaqueter les dépendances dans des images de conteneurs avec le code de la fonction Lambda et un runtime personnalisé.

Nous disposons de plusieurs options pour optimiser les fonctions Lambda :

  1. Allocation de mémoire : Le choix de la taille de la mémoire est crucial pour équilibrer le coût et les performances. Des outils comme AWS Lambda Power Tuning peuvent aider à trouver la configuration optimale.
  2. Taille de l'emballage : Des packages 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éduire la taille des paquets en supprimant les dépendances inutiles et en compressant le code.
  3. Lambda SnapStart : Cette fonction pré-initialise les environnements fonctionnels, ce qui réduit considérablement les temps de démarrage à froid pour des durées d'exécution spécifiques.
  4. Concurrence provisionnée : Configurez la concurrence provisionnée pour garder les instances de fonction chaudes, ce qui garantit des temps de réponse constants pour les charges de travail critiques.
  5. Délais d'attente et limites de concurrence : Définissez des délais appropriés et une concurrence réservée pour empêcher les fonctions de s'emballer et maintenir un environnement Lambda stable.

Lambda envoie automatiquement des mesures à Amazon CloudWatch, notamment le nombre de requêtes, la latence, les taux d'erreur, etc.

Nous pouvons utiliser CloudWatch Logs pour accéder aux journaux que notre code de fonction et le runtime Lambda génèrent.

Pour tracer et dépanner les performances des applications Lambda distribuées, nous pouvons utiliser AWS X-Ray.

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 pour capturer des informations de diagnostic ou envoyer des données vers des destinations personnalisées.

Les exemples incluent l'extension Datadog pour les métriques et les traces, et l'extension AWS AppConfig pour les mises à jour dynamiques de la configuration.

Un mappage de source d'événement est une ressource Lambda qui lit des éléments à partir d'une source d'événement et invoque une fonction.

Nous pouvons utiliser des mappages de sources d'événements pour traiter des éléments provenant de flux Amazon DynamoDB, de flux Amazon Kinesis, de files d'attente Amazon MQ, de files d'attente Apache Kafka autogérées, de files d'attente Amazon SQS, etc.

Lambda fournit un mécanisme d'interrogation pour lire des lots d'enregistrements à partir des sources d'événements et invoquer une fonction.

Questions d'entretien avancées sur AWS Lambda

AWS Lambda utilise IAM (Identity and Access Management) pour contrôler l'accès à deux niveaux :

  • Les stratégies basées sur les ressources précisent 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 prévues.

Les démarrages à froid se produisent lorsque Lambda doit initialiser un nouvel environnement d'exécution pour traiter une demande d'invocation. Pour minimiser les démarrages à froid et améliorer la réactivité de notre fonction Lambda, nous pouvons utiliser plusieurs stratégies :

  1. Utilisez SnapStart : Cette fonctionnalité (disponible pour certaines durées 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.
  2. Activer la concurrence provisionnée : En gardant un pool d'environnements initialisés prêts à l'emploi, nous pouvons éliminer les démarrages à froid pour les charges de travail prévisibles.
  3. Optimisez la taille de l'emballage : Réduire la taille de notre paquet de fonctions en supprimant les dépendances inutiles et en optimisant le code peut accélérer le processus d'initialisation.
  4. Choix de la langue : Opter pour des langages comme Go ou Rust, connus pour leurs temps de démarrage plus rapides que les langages JVM, peut également contribuer à réduire les délais de démarrage à froid.
  5. Réutilisation du contexte d'exécution : Le fait de séparer le code de la fonction Lambda de la logique de configuration initiale nous permet de réutiliser le contexte d'exécution entre les invocations, ce qui réduit encore les frais généraux.

Lorsque vous exposez 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 demandes.
  • Activation des pools d'utilisateurs Amazon Cognito pour la gestion des utilisateurs.
  • Définition de politiques de ressources permettant d'autoriser ou de refuser l'accès en fonction des propriétés des requêtes, telles que les adresses IP source.
  • Mise en place de mTLS pour une communication client-serveur sécurisée.
  • Utilisation d'AWS WAF pour se protéger contre les exploits web courants ciblant les API.

Les images de conteneurs Lambda permettent d'empaqueter le code des fonctions et les dépendances dans un format de conteneur compatible avec l'OCI. Comparons les images de conteneurs avec les paquets de déploiement .zip :

Fonctionnalité

Images des conteneurs

.zip Packages de déploiement

Flexibilité d'exécution

Apportez votre propre runtime (n'importe quel langage ou version)

Limité aux temps d'exécution prédéfinis de Lambda

Taille du déploiement

Jusqu'à 10 Go

Jusqu'à 250 Mo (décompressé)

Déploiement & Démarrage à froid

Des déploiements plus lents et une latence de démarrage à froid potentiellement plus élevée

Déploiements plus rapides et latence de démarrage à froid généralement plus faible

Outillage & Flux de travail

Intégration transparente avec nos outils et flux de travail existants en matière de conteneurs

Peut nécessiter des outils supplémentaires pour la gestion et le déploiement des dépendances.

Mieux adapté pour

Applications avec des dépendances importantes ou des exigences d'exécution personnalisées

Les applications de petite taille et celles compatibles avec les temps d'exécution prédéfinis de Lambda.

Oui, les fonctions Lambda peuvent invoquer d'autres fonctions directement à l'aide du SDK AWS. Les cas d'utilisation les plus courants sont l'orchestration de fonctions, l'agrégation de résultats provenant de plusieurs fonctions et le traitement d'événements en éventail.

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 permettre l'invocation de la fonction appelante.

Questions d'entretien pratiques sur AWS Lambda

Nous pouvons mettre en œuvre une API REST simple en utilisant Lambda et API Gateway en suivant les étapes suivantes :

  1. Créez une fonction Lambda : Développez une fonction Lambda qui reçoit une entrée de API Gateway en tant qu'objet d'événement et renvoie un objet de réponse avec des données et des codes d'état.
  2. Créez une passerelle API: Dans la passerelle API, nous créons une nouvelle API REST avec une ressource et une méthode correspondant au chemin API et à la méthode HTTP.
  3. Configurez 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
  4. Déployez l'API: Déployez l'API pour générer un point d'accès URL public.
  5. Effectuez un test approfondi : Nous pouvons utiliser des outils comme cURL ou Postman pour nous assurer que l'API fonctionne correctement, la fonction Lambda gérant les demandes et renvoyant les réponses appropriées.

Nous pouvons configurer une fonction Lambda pour traiter les événements d'un seau S3 en suivant les étapes ci-dessous :

  1. Nous créons une fonction Lambda avec les autorisations appropriées pour accéder au seau S3.
  2. Dans la console S3, nous configurons une notification d'événement sur le seau source.
  3. Nous choisissons les types d'événements qui déclenchent la notification, tels que la création ou la suppression d'un objet.
  4. Nous spécifions la fonction Lambda comme destination de la notification.
  5. Nous testons en effectuant des actions sur le seau S3 qui correspondent aux types d'événements configurés.
  6. Nous vérifions que la fonction Lambda est invoquée avec un événement contenant les détails de l'action S3.

Nous pouvons configurer une fonction Lambda pour écrire des données dans un tableau DynamoDB en effectuant ces six étapes :

  1. Nous créons un tableau DynamoDB avec une clé primaire appropriée et tous les index secondaires nécessaires.
  2. Nous créons un rôle IAM pour la fonction Lambda avec des autorisations d'accès à DynamoDB.
  3. Nous créons une fonction Lambda et y attachons le rôle IAM.
  4. Nous utilisons le SDK DynamoDB pour créer une instance client avec le nom du tableau.
  5. Nous utilisons la méthode put_item pour écrire des éléments dans le tableau, en spécifiant les attributs clés et les autres champs.
  6. Testez la fonction avec des exemples d'événements et utilisez des requêtes DynamoDB pour vérifier que les données sont écrites correctement.

Nous pouvons mettre en œuvre une fonction Lambda programmée en procédant comme suit : nous :

  1. Créez une fonction Lambda pour exécuter la tâche souhaitée selon un calendrier.
  2. Ouvrez la console Amazon EventBridge et créez une nouvelle règle.
  3. Définissez une expression de planification pour la règle en utilisant la syntaxe rate ou cron.
  4. Sélectionnez la fonction Lambda comme cible de la règle.
  5. Enregistrez la règle et testez-la en attendant le prochain événement programmé.
  6. Vérifiez l'exécution de la fonction dans les métriques et les journaux de CloudWatch.

Pour transférer le trafic vers une nouvelle version d'une fonction Lambda, nous :

  1. Publiez une nouvelle version de la fonction Lambda avec le code mis à jour.
  2. Créez un alias qui pointe vers l'ancienne version stable.
  3. Mettez à jour l'alias pour répartir le trafic entre l'ancienne et la nouvelle version en utilisant des pondérations (par exemple, 90/10).
  4. Ajustez progressivement les pondérations afin d'augmenter le trafic vers la nouvelle version tout en surveillant les mesures.
  5. Une fois satisfait, mettez à jour l'alias afin d'envoyer 100 % du trafic vers la nouvelle version.
  6. Répétez 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 d'entretien courantes sur AWS Lambda permettent de tester la compréhension des candidats sur les concepts fondamentaux de Lambda, les meilleures pratiques et les modèles d'utilisation pratiques.

Il est important de se rappeler que l'expérience pratique de la construction et de l'exploitation d'applications Lambda est inestimable pour cimenter ces concepts.

Pour en savoir plus, consultez 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.

Obtenez Votre Certification
Timeline mobile.png

Photo of Zoumana Keita
Author
Zoumana Keita
LinkedIn
Twitter

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.

Sujets

Apprenez-en plus sur AWS grâce à ces cours !

Certification disponible

cours

Introduction à l'AWS

2 hr
11.1K
Découvrez le monde d'Amazon Web Services (AWS) et comprenez pourquoi il est à la pointe du cloud computing.
Afficher les détailsRight Arrow
Commencer Le Cours
Voir plusRight Arrow