Configurer les fonctions Lambda

Applications sans serveur avec AWS Lambda

Claudio Canales

Senior DevOps Engineer

Pourquoi la configuration compte

  • Le même code peut se comporter très différemment selon les réglages.
  • La configuration influe sur le rendement, le coût et la sécurité.
  • Objectif : comportement prévisible en dev et en prod.

Même code, réglages différents

Applications sans serveur avec AWS Lambda

Code vs configuration

Paquet de code

  • Paquet de code
  • Logique du gestionnaire + dépendances.
  • Tout changement exige un déploiement.

Configuration de la fonction

  • Configuration de la fonction
  • Mémoire, délai d'expiration, variables d'environnement.
  • Rôle d'exécution + couches.
Applications sans serveur avec AWS Lambda

Les paramètres que vous contrôlez

  • Environnement d'exécution + gestionnaire : quel code Lambda exécute.
  • Mémoire + délai : rendement, coût, sécurité.
  • Variables d'environnement : config sans valeurs en dur.
  • Rôle d'exécution : permissions pour les API AWS.
  • Couches : dépendances partagées entre fonctions.

Réglages de configuration Lambda

Applications sans serveur avec AWS Lambda

Notions de base : runtime et gestionnaire

  • Runtime = environnement de langage (p. ex., Python).
  • Handler = point d'entrée appelé par Lambda.
  • Format du gestionnaire : file.function.
  • Exemple : lambda_function.lambda_handler.

Décomposition de la chaîne du gestionnaire

Applications sans serveur avec AWS Lambda

Chaîne du gestionnaire : ce qui peut mal tourner

# lambda_function.py
def lambda_handler(event, context):
    return {"statusCode": 200}

Importer puis appeler le gestionnaire

Applications sans serveur avec AWS Lambda

Le rôle d'exécution (IAM)

  • IAM = Identity and Access Management (permissions).
  • Le rôle d'exécution définit ce que votre fonction peut faire.
  • Il contrôle quelles API AWS votre code peut appeler.

Rôle d'exécution comme carte d'accès

Applications sans serveur avec AWS Lambda

Qu'est-ce qu'une couche Lambda ?

  • Une couche est un fichier ZIP joint à une fonction.
  • Lambda rend les fichiers de la couche accessibles au runtime sous /opt.
  • Utilisez-les pour des bibliothèques et utilitaires communs.
  • Mettez la couche à jour une fois ; plusieurs fonctions la réutilisent.

Couche montée sous /opt

Applications sans serveur avec AWS Lambda

Où les couches apparaissent au runtime

  • Le code de votre fonction est monté sous /var/task.
  • Vos couches jointes sont montées sous /opt.
  • Lambda fournit aussi un dossier temporaire à /tmp.

Dossiers au runtime : /var/task, /opt, /tmp

Applications sans serveur avec AWS Lambda

La mémoire influe aussi sur le CPU

  • Plus de mémoire → plus de CPU.
  • Peut réduire le temps d'exécution pour les tâches liées au CPU.
  • Le coût total dépend de la durée et de la mémoire.

Mémoire accrue, CPU accru

Applications sans serveur avec AWS Lambda

Ajuster la mémoire avec des mesures

  • Commencez avec un défaut raisonnable (p. ex., 256 Mo).
  • Testez avec des événements réalistes.
  • Comparez durée et coût selon la mémoire.

Balayage mémoire : mesurer durée et coût

Applications sans serveur avec AWS Lambda

Délais d'expiration et exécution sûre

  • Le délai d'expiration arrête les exécutions hors contrôle.
  • Vérifiez le temps restant avant un long traitement.
  • Échouer vite et réessayer au besoin.

Délai d'expiration comme minuterie de sécurité

Applications sans serveur avec AWS Lambda

Démo : vérifier le temps restant

def lambda_handler(event, context):
    time_left = context.get_remaining_time_in_millis()
    if time_left < 500:
        raise TimeoutError("Not enough time left")
    return {"statusCode": 200}

Garde de compte à rebours via le contexte

Applications sans serveur avec AWS Lambda

Variables d'environnement

  • Gardez la config hors du code.
  • Séparez les réglages dev/test/prod.
  • Utilisez Secrets Manager pour les valeurs sensibles.

Les variables d'environnement règlent le comportement

Applications sans serveur avec AWS Lambda

Démo : lire des variables d'environnement

import os

STAGE = os.getenv("STAGE", "dev")
LOG_LEVEL = os.getenv(
    "LOG_LEVEL", "INFO"
)

Des valeurs par défaut rendent les tests locaux plus sûrs

  • Importez os pour accéder aux variables d'environnement.
  • os.getenv renvoie la valeur ou le défaut.
Applications sans serveur avec AWS Lambda

Pièges courants de configuration

  • Valeurs d'étape codées en dur dans le code.
  • Délai trop bas ou permissions IAM manquantes.
  • Secrets dans de simples variables d'environnement.

Pièges et règles pratiques

Applications sans serveur avec AWS Lambda

Passons à la pratique !

Applications sans serveur avec AWS Lambda

Preparing Video For Download...