← CertifHub
Programmation 6 juin 2026 · 4 · par L'équipe CertifApp

Optimiser les performances des fonctions AWS Lambda avec le provisioned concurrency et les layers

Découvrez comment réduire la latence de vos fonctions Lambda en combinant le provisioned concurrency et les layers, avec des exemples concrets et des bonnes pratiques pour les certifications Cloud.

Introduction

Les fonctions AWS Lambda sont la pierre angulaire des architectures serverless. Cependant, la latence à la première invocation (cold start) peut pénaliser les applications critiques. Deux mécanismes natifs d’AWS – Provisioned Concurrency et Lambda Layers – permettent d’atténuer ces problèmes. Cet article explique comment les configurer, les combiner, et quelles limites garder en tête lors de la préparation aux certifications Cloud.

1. Comprendre le provisioned concurrency

Le provisioned concurrency réserve des environnements d’exécution pré‑initialisés. Ainsi, chaque appel bénéficie d’un conteneur déjà chargé, éliminant le cold start.

  • Coût : facturation supplémentaire au prorata de la capacité réservée.
  • Scalabilité : le nombre d’instances réservées doit couvrir le pic de trafic prévu.
  • Usage typique : API à faible latence, traitements en temps réel, fonctions critiques pour les examens de certification.

Exemple de mise en place avec AWS CLI

aws lambda put-provisioned-concurrency-config \
  --function-name my-function \
  --qualifier $LATEST \
  --provisioned-concurrent-executions 10

Cette commande réserve 10 environnements prêts. Vous pouvez vérifier l’état avec :

aws lambda get-provisioned-concurrency-config \
  --function-name my-function \
  --qualifier $LATEST

2. Utiliser les Lambda Layers pour réduire la taille du package

Un layer est un archive ZIP partagé entre plusieurs fonctions. Il permet de séparer les dépendances lourdes (bibliothèques natives, SDKs) du code métier.

  • Avantages :
    • Diminution du temps d’extraction du package.
    • Réduction de la taille du déploiement, ce qui accélère le cold start lorsqu’il survient.
    • Gestion centralisée des versions de bibliothèques.
  • Limites : chaque fonction ne peut associer que 5 layers, et la taille totale (code + layers) ne doit pas dépasser 250 Mo.

Création d’un layer contenant numpy

mkdir -p python/lib/python3.9/site-packages
pip install numpy -t python/lib/python3.9/site-packages
zip -r numpy-layer.zip python
aws lambda publish-layer-version \
  --layer-name numpy-layer \
  --zip-file fileb://numpy-layer.zip \
  --compatible-runtimes python3.9

Ensuite, associez le layer à votre fonction :

aws lambda update-function-configuration \
  --function-name my-function \
  --layers arn:aws:lambda:us-east-1:123456789012:layer:numpy-layer:1

Le code de la fonction peut directement import numpy sans le charger dans le package principal.

3. Combiner provisioned concurrency et layers

Lorsque les deux techniques sont utilisées conjointement, les gains sont multiplicatifs :

  1. Layers réduisent le temps d’extraction et le poids du package, diminuant ainsi le temps de démarrage même en cas de cold start.
  2. Provisioned Concurrency garantit que le conteneur est déjà prêt, évitant le cold start complet.

Cas d’étude : API de traitement d’image

Supposons une API qui reçoit une image, applique des filtres via Pillow et renvoie le résultat. La fonction utilise un layer contenant Pillow et opencv. Vous réservez 5 environnements grâce au provisioned concurrency.

Resources:
  ImageProcessorFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: image-processor
      Runtime: python3.9
      Handler: app.handler
      Code:
        ZipFile: |
          import json, base64
          from PIL import Image
          def handler(event, context):
              # Traitement rapide grâce aux dépendances dans le layer
              return {"statusCode": 200, "body": "ok"}
      Layers:
        - !Ref PillowLayer
      ProvisionedConcurrencyConfig:
        ProvisionedConcurrentExecutions: 5

Cette définition CloudFormation montre comment déclarer les deux concepts en une seule ressource.

4. Bonnes pratiques et pièges à éviter

  • Surveiller les métriques : ConcurrentExecutions, ProvisionedConcurrencySpilloverInvocations et Duration. Un pic inattendu peut entraîner un spillover, où AWS crée des instances non provisionnées, réintroduisant le cold start.
  • Gestion du versionnage : lors de la mise à jour d’un layer, incrémentez la version et testez la compatibilité avant de l’appliquer à toutes les fonctions.
  • Équilibrer coût et performance : commencez par un petit nombre de provisioned concurrency et augmentez progressivement en fonction des résultats de vos tests de charge.
  • Éviter les dépendances inutiles : chaque octet ajouté au layer augmente le temps d’initialisation. Nettoyez les packages et supprimez les fichiers de test.

Conclusion

En combinant judicieusement le provisioned concurrency et les Lambda Layers, vous pouvez réduire de façon significative la latence de vos fonctions AWS Lambda, tout en conservant une architecture maintenable. Ces techniques sont fréquemment abordées dans les examens de certification Cloud, et maîtriser leur mise en œuvre vous donne un avantage concret pour vos projets serverless.

Envie d’aller plus loin avec CertifApp ?

Découvrir CertifApp