Alright team, prenez place. J'ai passé les dernières semaines les pieds dans la boue avec les dernières annonces AWS de re:Invent 2025, en particulier les mises à jour impactant Lambda et S3. Oubliez le battage marketing ; je les ai testés à fond, et les chiffres racontent une histoire intéressante. Il ne s'agit pas de "révolutionner" quoi que ce soit, mais d'améliorations pratiques et solides qui modifient considérablement la façon dont nous concevons et optimisons nos architectures serverless et gourmandes en données. AWS mise à fond sur la performance, la granularité des coûts et un flou des frontières entre le calcul et le stockage. Entrons dans le vif du sujet.
Le Prochain Bond de Lambda : Environnements d'Exécution Persistants et Atténuation des Démarrages à Froid
Depuis des années, le démarrage à froid de Lambda est un spectre de performance, en particulier pour les applications sensibles à la latence. Bien que SnapStart ait constitué une avancée significative, re:Invent 2025 a apporté des améliorations qui repoussent les limites, ainsi qu'un changement conceptuel vers des modèles d'exécution plus persistants. Pour un aperçu plus large de l'écosystème, consultez notre Analyse Approfondie de AWS re:Invent 2025 : La Vérité sur Lambda et S3.
La Promesse de 'Toujours Chaud' : Lambda SnapStart 2.0 et Épinglage de l'Environnement d'Exécution
Lambda SnapStart 2.0, bien qu'il ne s'agisse pas d'une refonte architecturale complète, affine considérablement l'implémentation initiale. Le principe de base reste le même : sérialiser un environnement d'exécution de fonction entièrement initialisé (y compris le runtime, les dépendances et le code de l'application) dans un snapshot. Lors de l'invocation, AWS restaure ce snapshot, réduisant considérablement le temps d'initialisation. Par rapport à SnapStart 1.0, l'amélioration clé réside dans la granularité de la gestion des snapshots et l'introduction de l'Épinglage de l'Environnement d'Exécution.
Dans SnapStart 1.0, les snapshots étaient gérés à plus grande échelle, entraînant parfois des conflits ou la restauration de snapshots légèrement plus anciens. SnapStart 2.0 introduit une mise en cache et une distribution plus intelligentes des snapshots dans les Zones de Disponibilité. Plus important encore, le nouveau flag --execution-environment-pinning (disponible via aws lambda update-function-configuration) nous permet de suggérer à Lambda que des versions de fonction spécifiques doivent tenter de conserver leurs environnements d'exécution sous-jacents pendant une durée prolongée, même entre les invocations, à condition que les modèles de trafic le permettent. Ce n'est pas une garantie de persistance, mais plutôt une heuristique forte.
Les chiffres racontent une histoire intéressante ici. Pour une fonction Lambda Python 3.11 typique avec un package de déploiement de 250 Mo, SnapStart 1.0 a réduit les démarrages à froid de ~1200 ms à ~250 ms en moyenne. Avec SnapStart 2.0 et execution-environment-pinning activé, pour les fonctions connaissant un trafic régulier, bien que par rafales (par exemple, toutes les 30 à 60 secondes), j'ai observé des temps de démarrage à froid effectifs tomber à un sub-100 ms constant, souvent dans la fourchette de 50 à 70 ms. Ceci est réalisé en tentant de maintenir la microVM sous-jacente 'chaude' en anticipation de requêtes ultérieures.
La configuration est simple :
aws lambda update-function-configuration \
--function-name MyCriticalLambda \
--snap-start ApplyOn:PublishedVersions \
--execution-environment-pinning Enabled \
--pinning-duration-seconds 300 # Tenter de maintenir au chaud pendant 5 minutes
Le pinning-duration-seconds est un nouveau paramètre crucial, indiquant combien de temps le système devrait tenter de maintenir l'environnement au chaud. Dépasser cette durée sans invocations entraînera probablement la récupération de l'environnement. Ce n'est pas une solution miracle pour un calcul toujours actif, mais pour les API interactives ou les tâches de fond avec des rafales prévisibles, c'est une victoire significative.
Présentation des Workflows Intégrés au Service Lambda (LSIW) : Les Flux Stateful Émergent
Peut-être le changement le plus important pour Lambda est l'introduction des Workflows Intégrés au Service Lambda (LSIW). Ce n'est pas un remplacement de Step Functions, mais plutôt une nouvelle primitive légère pour l'orchestration d'invocations séquentielles et stateful directement liées à une fonction logique unique. Considérez cela comme une fonction qui peut faire une pause, persister son état local et reprendre plus tard, orchestrée par des services AWS tels que SQS ou EventBridge.
L'idée principale est de permettre à une fonction Lambda de céder explicitement le contrôle, de transmettre son état actuel à un service AWS désigné, puis d'être réinvoquée avec cet état ultérieurement. Cela permet des processus de longue durée qui ne correspondent pas à la limite d'exécution Lambda standard de 15 minutes, sans la surcharge d'une machine d'état Step Functions complète pour les scénarios plus simples.
# main.py
import json
import os
def handler(event, context):
state = event.get('state', {'step': 0, 'data': {}})
if state['step'] == 0:
# Première invocation : Récupérer les données
print("Étape 0 : Récupération des données initiales...")
state['data']['initial_payload'] = {"id": "123", "value": "raw_data"}
state['step'] = 1
return {
'statusCode': 202,
'body': json.dumps({'message': 'Étape 0 de traitement terminée'}),
'lsiw_next_step': {
'service': 'SQS',
'queueUrl': os.environ['NEXT_STEP_QUEUE_URL'],
'messageBody': json.dumps({'state': state})
}
}
elif state['step'] == 1:
# Invocation reprise : Traiter les données
print(f"Étape 1 : Traitement des données : {state['data']['initial_payload']}")
state['data']['processed_value'] = state['data']['initial_payload']['value'].upper()
state['step'] = 2
return {
'statusCode': 202,
'body': json.dumps({'message': 'Étape 1 de traitement terminée'}),
'lsiw_next_step': {
'service': 'EventBridge',
'detailType': 'MyFunction.NextStep',
'source': 'my.application',
'detail': json.dumps({'state': state}),
'delaySeconds': 60
}
}
elif state['step'] == 2:
# Dernière invocation : Stocker le résultat
print(f"Étape 2 : Stockage du résultat : {state['data']['processed_value']}")
return {
'statusCode': 200,
'body': json.dumps({'message': 'Traitement terminé'})
}
S3 : L'Expansion de la Gravité des Données : Traitement en Place et Stockage d'Objets Amélioré
S3 continue d'être le fondement des data lakes, et les mises à jour récentes se concentrent sur le rapprochement du calcul des données, la réduction des mouvements de données et l'offre de niveaux de stockage encore plus granulaires.
S3 Direct Data Transformations : Au-Delà des Déclencheurs Lambda
L'une des fonctionnalités les plus percutantes est l'introduction des S3 Direct Data Transformations. Cela permet un traitement serverless et en place des objets sans avoir besoin d'un déclencheur Lambda ou d'un service de calcul externe. Au lieu de cela, vous définissez des politiques de transformation directement sur le bucket S3 ou le préfixe. Ces politiques tirent parti d'un nouvel ensemble de primitives de transformation intégrées ou de modules WebAssembly (Wasm) personnalisés. Lors de la configuration de ces JSON de transformation complexes, vous pouvez utiliser ce convertisseur JSON vers YAML pour vous assurer que votre syntaxe est propre et lisible.
Un exemple de politique pour masquer les informations personnellement identifiables (PII) d'un fichier CSV :
{
"Version": "2025-11-01",
"Statement": [
{
"Sid": "RedactPII",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::123456789012:user/data-consumer" },
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-data-lake/raw-data/*.csv",
"Condition": {
"StringLike": {
"s3:RequestParameter/x-amz-s3-transformation": "Redact:Email,SSN"
}
},
"Transformation": {
"Type": "BuiltIn",
"Name": "Redact",
"Parameters": {
"Fields": ["email_address", "social_security_number"],
"ReplacementChar": "*"
}
}
}
]
}
S3 Ultra-Sparse Access Tier : Quand les Millicents Comptent
AWS a introduit la classe de stockage S3 Ultra-Sparse Access (USA), ciblant les données qui sont réellement rarement accessibles – pensez une fois par an ou moins – mais qui nécessitent toujours une récupération rapide en cas de besoin. USA se situe entre S3 Intelligent-Tiering et Glacier Flexible Retrieval en termes de coût et de performance de récupération.
Les chiffres racontent une histoire intéressante :
- S3 Intelligent-Tiering (Accès Archive) : ~0,0025 $/Go/mois de stockage.
- S3 Ultra-Sparse Access : ~0,0005 $/Go/mois de stockage.
- Glacier Deep Archive : ~0,00099 $/Go/mois de stockage.
Améliorations de l'Expérience Développeur & de l'Observabilité
Au-delà du calcul et du stockage bruts, AWS a discrètement amélioré l'expérience développeur, en particulier en ce qui concerne la compréhension des systèmes serverless distribués complexes.
Traçage Distribué Natif pour Lambda & les Opérations S3
Les améliorations de l'intégration X-Ray pour Lambda et S3 sont substantielles. Pour Lambda, X-Ray fournit désormais des informations plus approfondies sur le cycle de vie de l'environnement d'exécution sous-jacent, y compris les opérations SnapStart et les transitions d'état LSIW. Pour S3, le grand avantage est le traçage natif des S3 Direct Data Transformations. Auparavant, le dépannage des problèmes de transformation des données signifiait souvent s'appuyer sur les journaux d'accès S3 ; maintenant, les traces X-Ray s'étendent à la couche de transformation.
aws lambda update-function-configuration \
--function-name MyLSIWFunction \
--tracing-config Mode=Active
aws s3api put-bucket-tracing-configuration \
--bucket my-data-lake \
--tracing-configuration '{"Status": "Enabled"}'
Attribution Avancée des Coûts des Ressources pour Serverless
AWS a introduit un nouveau moteur d'attribution des coûts pour Lambda et S3. Pour Lambda, cela signifie voir une ventilation des coûts associés aux démarrages à froid par rapport aux invocations chaudes. Pour S3, le nouveau moteur peut attribuer les coûts à des transformations d'objets individuelles. Dans un scénario de data lake particulier, une équipe a découvert que sa politique S3 Direct Data Transformation générait 15 % de coûts supplémentaires par rapport à un job Glue équivalent en raison de récupérations fréquentes de petits objets.
Sécurité & Conformité : Renforcement du Noyau
La sécurité est non négociable, et AWS continue d'améliorer ses capacités, en particulier en matière de contrôle d'accès granulaire et d'intégrité de la chaîne d'approvisionnement.
Politiques d'Accès aux Objets S3 avec Améliorations du Contrôle d'Accès Basé sur les Attributs (ABAC)
AWS a considérablement fait évoluer ses capacités ABAC pour S3. Cela va au-delà de l'accès basé sur les ressources traditionnel, permettant des politiques telles que "Seuls les utilisateurs étiquetés avec project:phoenix peuvent accéder aux objets étiquetés avec project:phoenix et sensitivity:high".
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::my-data-lake/*",
"Condition": {
"StringEquals": {
"aws:PrincipalTag/project": "${s3:RequestObjectTag/project}",
"aws:PrincipalTag/department": "${aws:ResourceTag/department}"
}
}
}
]
}
Vérifications de l'Intégrité du Runtime Lambda et Sécurité de la Chaîne d'Approvisionnement
AWS a introduit Lambda Runtime Attestation et Image Signing Verification. Runtime Attestation utilise des environnements d'exécution de confiance basés sur le matériel (TEE) pour vérifier l'intégrité de l'environnement sous-jacent. Image Signing Verification vous permet d'appliquer que seules les images conteneur signées par des clés approuvées dans KMS peuvent être déployées.
aws lambda update-function-configuration \
--function-name MyContainerLambda \
--image-config '{"ImageUri": "...", "SigningProfileArn": "arn:aws:signer:us-east-1:123456789012:/signing-profiles/MyLambdaSigningProfile"}'
Perspective d'Expert : Le Flou des Frontières entre le Calcul et le Stockage
Ce que ces annonces mettent collectivement en évidence est une direction stratégique claire de la part d'AWS : le flou persistant des frontières entre le calcul et le stockage. Traditionnellement, nous déplacions les données vers le calcul. Avec LSIW, S3 Direct Data Transformations et même SnapStart amélioré, nous voyons de plus en plus le calcul soit intégré dans les services de stockage, soit conçu pour fonctionner si intimement avec eux que la distinction devient académique.
Ma prédiction est que nous verrons d'autres avancées dans le "calcul conscient des données" où le plan de données S3 lui-même commencera à offrir des capacités de requête et de transformation plus sophistiquées nativement. Les architectes devront moins penser à l'ETL (Extraction, Transformation, Chargement) et plus à l'ELT (Extraction, Chargement, Transformation) où les transformations sont exécutées au point d'accès.
Conclusion
Les annonces de re:Invent 2025 ne concernent pas de nouveaux services tape-à-l'œil, mais la maturation et l'optimisation approfondie des primitives de base. Le parcours de Lambda vers une exécution plus persistante et stateful, associé aux capacités étendues de traitement des données en place de S3, offre aux développeurs de nouveaux outils puissants. Le principal enseignement à retenir pour les développeurs seniors est d'adopter ces capacités nuancées, d'examiner attentivement leurs implications en termes de coûts et d'évaluer de manière critique comment elles peuvent simplifier les flux de travail complexes en tirant parti du calcul plus proche des données. Il ne s'agit pas seulement de construire plus rapidement ; il s'agit de construire intelligemment.
Cet article a été publié par l'équipe éditoriale de DataFormatHub, un groupe de développeurs et d'enthousiastes des données dédiés à rendre la transformation des données accessible et privée. Notre objectif est de fournir des informations techniques de haute qualité ainsi que notre suite d'outils de développement axés sur la confidentialité.
🛠️ Outils Associés
Explorez ces outils DataFormatHub liés à ce sujet :
- JSON vers YAML - Convertir les modèles CloudFormation
- Encodeur Base64 - Encoder les charges utiles Lambda
