Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Meilleures pratiques pour les instances gérées Lambda
Configuration du fournisseur de capacité
Séparez les fournisseurs de capacités par niveau de confiance. Créez différents fournisseurs de capacité pour les charges de travail présentant des exigences de sécurité différentes. Toutes les fonctions attribuées au même fournisseur de capacité doivent faire l'objet d'une confiance mutuelle, car les fournisseurs de capacité constituent la limite de sécurité.
Utilisez des noms descriptifs. Nommez les fournisseurs de capacités pour indiquer clairement leur utilisation prévue et leur niveau de confiance (par exempleproduction-trusted,dev-sandbox). Cela permet aux équipes de comprendre l'objectif et la posture de sécurité de chaque fournisseur de capacité.
Utilisez plusieurs zones de disponibilité. Spécifiez des sous-réseaux dans plusieurs zones de disponibilité lors de la création de fournisseurs de capacité. Lambda lance trois instances par défaut pour garantir la résilience AZ, garantissant ainsi une haute disponibilité de vos fonctions.
Sélection du type d'instance
Laissez Lambda choisir les types d'instances. Par défaut, Lambda choisit les types d'instances les mieux adaptés à votre charge de travail. Nous vous recommandons de laisser les instances gérées Lambda choisir les types d'instance pour vous, car la restriction du nombre de types d'instances possibles peut entraîner une baisse de disponibilité.
Spécifiez les types d'instances en fonction de besoins spécifiques. Si vous avez des exigences matérielles spécifiques, définissez les types d'instances autorisés sur une liste d'instances compatibles. Par exemple :
-
Pour les applications nécessitant une bande passante réseau élevée, sélectionnez plusieurs types d'instances n
-
Pour les environnements de test ou de développement soumis à des contraintes de coûts, choisissez des types d'instances plus petits tels que m7a.large
Configuration de la fonction
Choisissez les paramètres de mémoire et de processeur virtuel appropriés. Sélectionnez des configurations de mémoire et de processeur virtuel qui prennent en charge les exécutions multisimultanées de votre fonction. La taille de fonction minimale prise en charge est de 2 Go et 1 processeur virtuel.
-
Pour les applications Python, choisissez un ratio mémoire/vCPU plus élevé (par exemple 4 pour 1 ou 8 pour 1) en raison de la façon dont Python gère la multisimultanéité
-
Pour les CPU-intensive opérations ou les fonctions qui effectuent peu d'E/S, choisissez plusieurs processeurs virtuels
-
Pour les IO-heavy applications telles que les services Web ou les tâches par lots, la multisimultanéité offre le plus d'avantages
Configurez la simultanéité maximale de manière appropriée. Lambda choisit des valeurs par défaut raisonnables pour une simultanéité maximale qui équilibre la consommation de ressources et le débit. Ajustez ce paramètre en fonction de l'utilisation des ressources de votre fonction :
-
Augmentez la simultanéité maximale (jusqu'à 64 par processeur virtuel) si les invocations de vos fonctions utilisent très peu de processeur
-
Réduisez la simultanéité maximale si votre application consomme une grande quantité de mémoire et très peu de processeur
Notez que les environnements d'exécution présentant une très faible simultanéité peuvent rencontrer des ralentissements et des difficultés de mise à l'échelle.
Configuration de la mise à l'échelle
Définissez une utilisation des ressources cible appropriée. Par défaut, Lambda conserve une marge de manœuvre suffisante pour que votre trafic double en 5 minutes sans ralentissement. Ajustez cela en fonction des caractéristiques de votre charge de travail :
-
Pour des charges de travail très stables ou des applications qui ne sont pas sensibles aux contraintes, fixez l'objectif à un niveau élevé afin d'augmenter le taux d'utilisation et de réduire les coûts
-
Pour les charges de travail présentant des pics de trafic potentiels, définissez des objectifs de ressources à un niveau bas afin de conserver une marge de manœuvre supplémentaire
Planifiez la croissance du trafic. Si votre trafic fait plus que doubler en 5 minutes, vous risquez de rencontrer des ralentissements à mesure que Lambda fait évoluer les instances et les environnements d'exécution. Concevez votre application de manière à gérer les éventuelles limitations pendant les périodes de mise à l'échelle rapide.
Sécurité
Appliquez le moindre privilège pour PassCapacityProvider les autorisations. Accordez lambda:PassCapacityProvider des autorisations uniquement aux fournisseurs de capacité nécessaires. Utilisez les autorisations au niveau des ressources pour limiter les fournisseurs de capacité que les utilisateurs peuvent attribuer aux fonctions.
Surveillez l'utilisation du fournisseur de capacité. Permet AWS CloudTrail de surveiller les attributions et les modèles d'accès des fournisseurs de capacité. Cela permet d'identifier les tentatives d'accès non autorisées et garantit la conformité aux politiques de sécurité.
Séparez les charges de travail non fiables. Ne vous fiez pas aux conteneurs pour isoler la sécurité entre des charges de travail non fiables. Utilisez différents fournisseurs de capacité pour séparer les charges de travail qui ne sont pas mutuellement fiables.
Optimisation des coûts
Utilisez les options de tarification EC2. Tirez parti des plans d'épargne EC2 et des instances réservées pour réduire les coûts. Ces options de tarification s'appliquent au calcul EC2 sous-jacent (les frais de gestion de 15 % ne sont pas réduits).
Optimisez pour les charges de travail en régime permanent. Les instances gérées Lambda sont particulièrement adaptées aux fonctions en régime permanent avec un trafic prévisible à volume élevé. Pour les modèles de trafic en rafale, Lambda (par défaut) peut être plus rentable.
Surveillez l'utilisation des ressources. Suivez CloudWatch les indicateurs pour comprendre l'utilisation du processeur et de la mémoire. Ajustez l'allocation de mémoire des fonctions et la sélection du type d'instance en fonction des modèles d'utilisation réels afin d'optimiser les coûts.
Surveillance et observabilité
Surveillez les indicateurs des fournisseurs de capacité. Suivez les indicateurs au niveau du fournisseur de capacité, MemoryUtilization notamment CPUUtilization et vCPUAvailable, et vérifiez que des ressources suffisantes sont disponibles MemoryAvailable pour vos charges de travail.
Surveillez les indicateurs de l'environnement d'exécution. Suivez les indicateurs au niveau de l'environnement d'exécution, notamment ExecutionEnvironmentConcurrency ExecutionEnvironmentConcurrencyLimit pour comprendre le comportement de mise à l'échelle et identifier les limitations potentielles.
Configurez CloudWatch des alarmes. Créez des CloudWatch alarmes pour les indicateurs clés afin d'identifier les problèmes de manière proactive :
-
Utilisation élevée du processeur ou de la mémoire
-
Faible capacité disponible
-
Approche des limites de simultanéité
Language-specific considérations
Suivez les meilleures pratiques propres à chaque langue. Chaque langage de programmation gère différemment la multisimultanéité. Consultez les guides spécifiques à chaque langue pour obtenir des recommandations détaillées :
-
Java : utilisez des collections résistantes aux threads
AtomicInteger, etThreadLocalpour l'état spécifique à la demande -
Node.js: à utiliser InvokeStore pour tous les états spécifiques à la demande et éviter les variables globales
-
Python : utilisez des noms de fichiers uniques
/tmpavec les ID de demande et envisagez une isolation de la mémoire basée sur les processus -
Rust : à utiliser à la
run_concurrentplace derun, avec laconcurrency-tokiofonctionnalité activée. Le gestionnaire doit êtreClone+Send.
Testez les problèmes de sécurité et de simultanéité des threads. Avant le déploiement en production, testez minutieusement vos fonctions pour détecter les problèmes de sécurité des threads, les conditions de concurrence et une isolation d'état appropriée en cas de charge simultanée.
Étapes suivantes
-
En savoir plus sur les fournisseurs de capacité pour les instances gérées Lambda
-
Comprendre la mise à l'échelle pour les instances gérées Lambda
-
Consultez les guides spécifiques à l'exécution pour Java et Node.js Python Runtime Python pour les instances gérées Lambda
-
Configurez la connectivité VPC pour vos fournisseurs de capacité
-
Surveillez les instances gérées Lambda à l'aide de métriques CloudWatch