Configurer AWS Lambda pour la production

Déployer des applications sur AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Ça fonctionnait en test

  • La fonction a réussi tous les tests
  • En production, elle expire et est limitée
  • Le code allait bien ; c'est la configuration qui clochait

Une fonction sans serveur qui a réussi les tests, mais éprouve des difficultés en production ; on ajuste la mémoire et le délai d'expiration

Déployer des applications sur AWS

Configuration Lambda clé en production

Logo Lambda central avec quatre encadrés de configuration de production : mémoire avec cadran d'échelle CPU, délai d'expiration avec horloge, stockage éphémère et simultanéité montrant des exécutions parallèles

  • Mémoire : fait aussi évoluer le CPU et le réseau
  • Délai d'expiration : secondes max avant l'arrêt de la fonction
  • Stockage éphémère : espace temporaire dans /tmp
  • Simultanéité : nombre d'exécutions en parallèle
Déployer des applications sur AWS

Dimensionnement de la mémoire et lien avec le CPU

  • Plus de mémoire = plus de CPU proportionnel
  • Une fonction liée au CPU tourne plus vite avec plus de mémoire
  • Durée plus courte = coût moindre possible
  • Dimensionnez par des tests, pas à l'aveugle

Courbe mémoire-coût : la durée chute fortement puis se stabilise avec plus de mémoire ; le coût total forme un U avec le point optimal au milieu

Déployer des applications sur AWS

Simultanéité : réservée vs provisionnée


Simultanéité réservée

  • Limite le nombre d'exécutions simultanées
  • Protège les systèmes en aval et les autres fonctions

Simultanéité provisionnée

  • Préchauffe des instances pour éviter les démarrages à froid
  • Pour les fonctions à faible latence, exposées aux utilisateurs
Déployer des applications sur AWS

Emballer la configuration et le code partagé

  • Variables d'environnement : configuration par environnement
  • Couches (layers) : partager code et dépendances entre fonctions
  • Extensions : s'exécutent avec la fonction pour des outils
  • Gardez la config hors du paquet de déploiement

Options d'empaquetage Lambda : variables d'environnement pour la config externe, couches partageant des bibliothèques communes, et extensions s'exécutant avec le gestionnaire pour la supervision ou les secrets

Déployer des applications sur AWS

Connecter Lambda à un VPC

Lambda connecté à un VPC privé via des ENI dans des sous-réseaux privés, un groupe de sécurité contrôlant l'accès sortant, et une passerelle NAT offrant la connectivité Internet

  • Attachez Lambda à des sous-réseaux privés pour les ressources internes
  • Lambda crée des ENI dans votre VPC
  • Les groupes de sécurité contrôlent ce qu'elle peut joindre
  • Besoin d'une passerelle NAT ou d'un point de terminaison VPC pour l'accès externe
Déployer des applications sur AWS

Gérer les échecs avec des destinations et des DLQ

  • Les invocations asynchrones réessaient automatiquement en cas d'échec
  • Lambda Destinations : aiguiller onSuccess et onFailure
  • File d'attente de rejets : capter les événements jamais réussis
  • Ne laissez jamais un événement échoué disparaître en silence

Gestion des échecs asynchrones Lambda : boucle de réessai menant à Lambda Destinations avec branches onSuccess et onFailure, et une file d'attente de rejets captant les événements après tous les réessais

Déployer des applications sur AWS

Passons à la pratique !

Déployer des applications sur AWS

Preparing Video For Download...