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.
Bonnes pratiques pour les instances gérées Lambda
Configuration du fournisseur de capacité
Séparez les fournisseurs de capacité 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 assignées au même fournisseur de capacité doivent être mutuellement fiables, car les fournisseurs de capacité servent de limite de sécurité.
Utilisez des noms descriptifs. Nommez les fournisseurs de capacité 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 le niveau 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 la résilience AZ, garantissant ainsi la 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'instances à votre place, car la restriction du nombre de types d'instances possibles peut entraîner une baisse de disponibilité.
Spécifiez les types d'instances pour des besoins spécifiques. Si vous avez des exigences matérielles spécifiques, définissez les types d'instances autorisés dans 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ût, choisissez des types d'instances plus petits tels que m7a.large
Configuration de la fonction
Choisissez les paramètres de mémoire et de vCPU appropriés. Sélectionnez des configurations de mémoire et de vCPU qui prennent en charge les exécutions simultanées de votre fonction. La taille de fonction minimale prise en charge est de 2 Go et 1 vCPU.
-
Pour les applications Python, choisissez un ratio mémoire/v plus élevé CPUs (par exemple 4 pour 1 ou 8 pour 1) en raison de la façon dont Python gère la multisimultanéité
-
Pour les opérations gourmandes en ressources CPU ou les fonctions qui effectuent peu d'E/S, choisissez plusieurs vCPU
-
Pour les applications gourmandes en E/S, 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 le maximum de simultanéité (jusqu'à 64 par vCPU) si vos invocations de fonctions utilisent très peu de CPU
-
Diminuez 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 être confrontés à des ralentissements et à des difficultés de mise à l'échelle.
Configuration de la mise à l'échelle
Définissez une utilisation cible appropriée des ressources. Par défaut, Lambda conserve une marge de manœuvre suffisante pour que votre trafic double en 5 minutes sans limitation. Ajustez cela en fonction des caractéristiques de votre charge de travail :
-
Pour des charges de travail très stables ou des applications non sensibles aux limitations, 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 susceptibles de générer des pics de trafic, 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 double plus que dans les 5 minutes, vous risquez de constater des ralentissements à mesure que Lambda augmente le nombre d'instances et d'environnements d'exécution. Concevez votre application de manière à gérer les ralentissements potentiels pendant les périodes de mise à l'échelle rapide.
Sécurité
Appliquez le moindre privilège pour PassCapacityProvider les autorisations. N'accordez lambda:PassCapacityProvider des autorisations qu'aux fournisseurs de capacité nécessaires. Utilisez les autorisations au niveau des ressources pour limiter les fournisseurs de capacité que les utilisateurs peuvent affecter aux fonctions.
Surveillez l'utilisation des fournisseurs de capacité. AWS CloudTrail À utiliser pour surveiller les affectations des fournisseurs de capacité et les modèles d'accès. Cela permet d'identifier les tentatives d'accès non autorisées et de garantir le respect des politiques de sécurité.
Séparez les charges de travail non fiables. Ne vous fiez pas aux conteneurs pour isoler la sécurité entre les 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
Tirez parti EC2 des options de tarification. Profitez des EC2 Savings Plans et des instances réservées pour réduire les coûts. Ces options de tarification s'appliquent au EC2 calcul sous-jacent (les frais de gestion de 15 % ne sont pas réduits).
Optimisez 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 volume de trafic élevé prévisible. Pour les modèles de trafic en rafale, Lambda (par défaut) peut être plus rentable.
Surveillez l'utilisation des ressources. Suivez CloudWatch les métriques 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 des fournisseurs de capacité CPUUtilization, y compris MemoryUtilization, vCPUAvailable, et MemoryAvailable pour vous assurer que des ressources suffisantes sont disponibles pour vos charges de travail.
Surveillez les métriques 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 dimensionnement et identifier les ralentissements potentiels.
Configurez des CloudWatch 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
-
À l'approche des limites de simultanéité
Considérations spécifiques à l'exécution
Suivez les meilleures pratiques spécifiques à l'environnement d'exécution. Chaque environnement d'exécution gère différemment la multisimultanéité. Consultez les guides spécifiques à l'environnement d'exécution pour obtenir des recommandations détaillées :
-
Java : utilisez des collections adaptées aux threads et
ThreadLocalpour un étatAtomicIntegerspé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 dans les requêtes IDs et envisagez
/tmpune isolation de la mémoire basée sur les processus
Testez les problèmes de sécurité et de simultanéité des threads. Avant le déploiement en production, testez soigneusement vos fonctions pour détecter les problèmes de sécurité des threads, les conditions de course et l'isolation correcte des états sous charge simultanée.
Étapes suivantes
-
En savoir plus sur les fournisseurs de capacité pour les instances gérées Lambda
-
Comprendre le dimensionnement pour les instances gérées Lambda
-
Consultez les guides spécifiques à l'exécution pour Java, Node.js et Python
-
Configurez la connectivité VPC pour vos fournisseurs de capacité
-
Surveillez les instances gérées Lambda à l'aide de métriques CloudWatch