Cible d'invocation stable pendant que vous poussez du nouveau code Lambda.
→Publier des versions numérotées et immuables ; exposer un alias qui pointe vers une version. Les appelants invoquent l'ARN de l'alias.
Pourquoi: Les versions sont des instantanés figés de code + configuration ; les alias fournissent une indirection pour que les appelants n'invoquent jamais directement `$LATEST`.
Référence↗
Déploiement progressif d'une nouvelle version de Lambda avec retour arrière automatique en cas d'erreurs.
→Alias avec routage de version pondéré (par exemple 90/10). CodeDeploy `LambdaCanary10Percent5Minutes` ou `LambdaLinear*` déplace le trafic et surveille les alarmes CloudWatch.
Pourquoi: Le décalage de trafic intégré + le retour arrière basé sur les alarmes éliminent la logique canary codée manuellement.
Référence↗
Injecter la configuration (URL de base de données, indicateurs de fonctionnalités) sans redéploiement.
→Variables d'environnement Lambda. Chiffrées par KMS au repos ; référencez une CMK personnalisée pour un chiffrement supplémentaire en transit lors de la récupération.
Référence↗
Partager NumPy / pandas / environnement d'exécution commun entre plusieurs Lambdas.
→Empaqueter en tant que couche Lambda ; jusqu'à 5 couches par fonction, total 250 Mo décompressés. ARN versionné par couche.
Référence↗
Lambda synchrone sensible à la latence — pas de démarrage à froid autorisé.
→Concurrence provisionnée sur l'alias. Pré-initialise N environnements d'exécution ; facturé par seconde-gigaoctet.
Pourquoi: Élimine le démarrage à froid à un coût prévisible. Configurez l'auto-scaling d'application sur l'alias pour s'adapter à la charge.
Référence↗
Lambda Java ou Python avec un code d'initialisation lourd ; besoin d'un démarrage à froid rapide sans payer pour la concurrence provisionnée.
→Activer SnapStart sur une version publiée. AWS prend un instantané de l'environnement d'exécution initialisé et reprend à partir de celui-ci.
Pourquoi: Gratuit pour Java ; facturé par restauration pour Python/.NET. Réduit les démarrages à froid de plusieurs secondes à <1s sans coût d'inactivité.
Référence↗
Lambda doit consommer un flux Kinesis / un flux DynamoDB / une file d'attente SQS / un sujet MSK.
→Mappage de source d'événement (basé sur le pull). Lambda interroge ; taille du lot + fenêtre de regroupement maximale ajustent le débit vs la latence. Échec → DLQ via destination On-Failure.
Pourquoi: Pour les sources basées sur le pull, le service ne peut pas invoquer directement Lambda ; le mappage est l'adaptateur d'interrogation de Lambda.
Référence↗
Routage succès/échec de Lambda asynchrone sans DLQ Lambda.
→Destinations OnSuccess / OnFailure sur la fonction. Cibles : SNS, SQS, EventBridge, une autre fonction Lambda. Inclut le contexte d'invocation.
Pourquoi: Les destinations capturent l'événement complet + la réponse ; la DLQ héritée ne capture que la charge utile de l'événement.
Référence↗
Choisir le type d'API Gateway pour une nouvelle API REST.
→API HTTP : moins chère, plus rapide, authentification JWT intégrée, plus simple. API REST : fonctionnalités complètes (modèles de mappage, validateurs de requêtes, WAF, points de terminaison privés, X-Ray, mise en cache d'API).
Pourquoi: Utilisez l'API HTTP par défaut, sauf si vous avez besoin d'une fonctionnalité spécifique aux API REST. Les API WebSocket sont un produit distinct pour le temps réel avec état.
Référence↗
Promouvoir les modifications d'API de dev → test → prod sans redéployer des API distinctes.
→Étapes sur une seule API. Déployez une étape pour publier ; les variables d'étape contiennent des valeurs spécifiques à l'environnement comme les noms d'alias Lambda.
Référence↗
Le backend Lambda s'attend à une forme différente de celle envoyée par le client.
→Modèle de mappage requête/réponse (API REST uniquement). VTL avec `$input`, `$context`, `$util` pour transformer le JSON.
Pourquoi: Les modèles de mappage s'exécutent dans API Gateway — pas de saut Lambda supplémentaire, pas de latence ou de coût supplémentaire.
Référence↗
Valider un jeton personnalisé (pas Cognito, pas IAM) avant de router la requête.
→Authorizer Lambda. Le type TOKEN lit un en-tête ; le type REQUEST lit le contexte de requête complet. Renvoie la politique IAM + principalId. Mis en cache par identité pour la durée de vie (TTL).
Référence↗
Valider un JWT de Cognito User Pool à chaque requête.
→Authorizer Cognito User Pool (REST) ou authorizer JWT (HTTP). API Gateway valide le jeton ; aucune Lambda n'est nécessaire.
Pourquoi: La validation native est moins chère et plus rapide qu'un authorizer Lambda pour le cas courant du JWT.
Référence↗
Limiter/allouer le quota d'un consommateur d'API partenaire.
→Plan d'utilisation + Clé API. Le plan associe les clés à une étape avec une limite de débit (req/sec) + rafale + quota (req/jour ou mois).
Référence↗
Réduire la charge du backend pour les requêtes GET répétées.
→Cache au niveau de l'étape (API REST). TTL configurable ; clé de cache dérivée de la méthode + chemin + paramètres de requête/en-tête sélectionnés.
Référence↗
Mettre à jour un élément uniquement si une précondition est remplie (par exemple, statut == "PENDING").
→PutItem/UpdateItem avec `ConditionExpression`. L'échec lève une `ConditionalCheckFailedException`.
Pourquoi: La vérification côté serveur évite les conflits de lecture-modification-écriture sans verrouillage.
Référence↗
Tout ou rien sur plusieurs éléments DynamoDB.
→`TransactWriteItems` / `TransactGetItems`. Jusqu'à 100 éléments / 4 Mo ; 2 fois le coût WCU/RCU des écritures/lectures normales.
Référence↗
Incrémenter un compteur sans lecture-modification-écriture.
→UpdateExpression `ADD count :inc`. Le serveur applique le delta de manière atomique.
Référence↗
Besoin d'un modèle d'accès supplémentaire au-delà de la clé primaire.
→GSI : clé de partition + de tri alternative, cohérence éventuelle, capacité séparée, peut être ajoutée à tout moment. LSI : même clé de partition, clé de tri alternative, option de forte cohérence, doit être créée lors de la création de la table.
Référence↗
Indexer uniquement les éléments qui ont un attribut particulier (par exemple, seules les commandes ACTIVES).
→Index sparse : omettez l'attribut sur les éléments que vous souhaitez exclure. Les éléments sans l'attribut indexé n'apparaissent pas dans le GSI/LSI.
Référence↗
Lecture/écriture en masse de plusieurs éléments.
→`BatchGetItem` (jusqu'à 100 éléments / 16 Mo) et `BatchWriteItem` (jusqu'à 25 éléments / 16 Mo). Non atomique ; les échecs partiels sont retournés dans `UnprocessedItems`.
Référence↗
Empêcher les mises à jour perdues dues aux écrivains concurrents.
→Attribut de version + `ConditionExpression: version = :v`. Les écritures échouées sont retentées par relecture.
Référence↗
Déclencher des actions en aval à chaque modification de DynamoDB.
→DynamoDB Streams + mappage de source d'événement Lambda. Vue du flux : NEW_IMAGE / OLD_IMAGE / NEW_AND_OLD_IMAGES / KEYS_ONLY.
Référence↗
Le navigateur télécharge/téléverse directement vers S3 sans que votre serveur ne proxifie les octets.
→SDK `getSignedUrl` pour GET ou PUT. Expiration jusqu'à 7 jours lorsqu'il est signé par un utilisateur IAM (sigv4) ; plus court pour les sessions dérivées de rôles.
Pourquoi: Décharge la bande passante de votre backend ; l'URL est une capacité temporaire limitée à un objet + méthode.
Référence↗
Téléverser un fichier volumineux (≫100 Mo) de manière fiable depuis le SDK.
→`CreateMultipartUpload` → `UploadPart` parallèle → `CompleteMultipartUpload`. Le gestionnaire de transfert de haut niveau du SDK gère automatiquement le dimensionnement des parties.
Pourquoi: Obligatoire >5 Go ; recommandé ≥100 Mo. Les parties échouées sont re-téléversées indépendamment. Définissez le cycle de vie pour annuler les multiparts incomplets afin de récupérer de l'espace de stockage.
Référence↗
Exécuter du code lorsqu'un objet est créé/supprimé dans S3.
→Notifications d'événements S3 → Lambda / SNS / SQS / EventBridge. Filtrer par préfixe et suffixe.
Référence↗
L'application navigateur récupère des données de S3 via des origines différentes (`fetch('https://bucket.s3...')`) ; la pré-vérification CORS échoue.
→Configurer les règles CORS du bucket : origines autorisées, méthodes (GET/PUT), en-têtes et en-têtes exposés.
Référence↗
Filtrer les lignes d'un objet CSV/JSON/Parquet de 50 Go sans le télécharger.
→S3 Select avec SQL. Ne renvoie que les lignes correspondantes ; payez pour le scan + les octets retournés.
Référence↗
Connecter un utilisateur depuis un client mobile/web public sans envoyer le mot de passe.
→Cognito User Pool avec le flux `USER_SRP_AUTH`. Le client calcule la preuve SRP ; le backend ne voit jamais le mot de passe. Renvoie les jetons ID + accès + rafraîchissement.
Référence↗
Un utilisateur fédéré (Google/Apple/Cognito UP) a besoin de justificatifs AWS temporaires pour appeler les API AWS directement depuis une application mobile.
→Cognito Identity Pool. Échange le jeton du fournisseur d'identité → rôle IAM → justificatifs AWS temporaires via STS.
Pourquoi: Les User Pools authentifient les utilisateurs ; les Identity Pools les autorisent à accéder aux ressources AWS.
Référence↗
Choisir un type de flux de travail Step Functions.
→Standard : longue durée (≤1 an), exécution unique et exacte, 0,025 $/1k transitions, historique complet. Express : ≤5 min, au moins une fois ou au plus une fois, facturé par requête + durée ; pour l'ETL/streaming à haut volume.
Référence↗
Une étape du flux de travail échoue ; souhaiter une nouvelle tentative avec backoff et un routage vers un état de récupération.
→Tableau `Retry` (par état, avec `BackoffRate` + `MaxAttempts`) et `Catch` pour le routage des échecs terminaux. Correspondance par `ErrorEquals` (par exemple `States.TaskFailed`, noms d'erreurs personnalisés).
Référence↗
Appliquer le même flux de travail à chaque élément d'un tableau, avec une limite de concurrence.
→État Map avec `ItemsPath` et `MaxConcurrency`. La carte distribuée gère plus de 10 000 éléments avec une entrée sauvegardée par S3.
Référence↗
Déclencher Lambda soit selon une planification cron, soit en fonction d'événements entrants correspondants.
→Règle EventBridge. Planification : `rate(...)` ou `cron(...)`. Modèle : filtre d'événements JSON ; correspondance sur la source, le type de détail, les champs de détail.
Référence↗
Router des événements de SQS / Kinesis / DynamoDB Streams / MSK vers une cible avec filtre + transformation optionnels.
→EventBridge Pipes. Source → Filtre → Enrichissement (Lambda/Step Functions) → Cible. Aucune Lambda n'est nécessaire pour les cas simples.
Référence↗
Traiter les messages strictement dans l'ordre par client, avec déduplication.
→File d'attente SQS FIFO. `MessageGroupId` partitionne l'ordonnancement (parallélisme par groupe) ; `MessageDeduplicationId` (ou déduplication basée sur le contenu) supprime les doublons dans les 5 minutes.
Référence↗
Un consommateur extrait un message mais plante avant de le supprimer.
→Message masqué pendant VisibilityTimeout secondes, puis réapparaît pour une nouvelle livraison. Ajuster au temps de traitement attendu le plus long + tampon.
Pourquoi: Trop court → traitement en double. Trop long → récupération lente en cas de plantage. ChangeMessageVisibility prolonge la durée de visibilité si nécessaire.
Référence↗
Un événement doit atteindre plusieurs consommateurs (Lambdas / files d'attente SQS / points de terminaison HTTP).
→Rubrique SNS avec plusieurs abonnés. Les politiques de filtrage d'abonnement acheminent uniquement les messages correspondants par abonné.
Référence↗
Ajuster la capacité de Kinesis Data Streams pour le débit d'écriture.
→Chaque shard = 1 Mo/s ou 1000 enregistrements/s en entrée, 2 Mo/s en sortie. Ajouter des shards (split) ou utiliser le mode On-Demand pour l'auto-scaling.
Référence↗