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.
Gestion de l’unicité avec Lambda SnapStart
Lorsque les invocations augmentent sur une fonction SnapStart, Lambda utilise un seul instantané initialisé pour reprendre plusieurs environnements d’exécution. Si votre code d’initialisation génère un contenu unique qui est inclus dans l’instantané, ce contenu peut ne pas être unique lorsqu’il est réutilisé dans plusieurs environnements d’exécution. Pour maintenir l’unicité lorsque vous utilisez SnapStart, vous devez générer un contenu unique après l’initialisation. Cela inclut les identifiants uniques, les secrets uniques et l’entropie utilisée pour générer un pseudo aléatoire.
Nous vous recommandons les bonnes pratiques suivantes pour vous aider à maintenir l’unicité de votre code. Pour les fonctions Java, Lambda fournit également un outil d’analyse SnapStart open source pour aider à vérifier le code qui suppose l’unicité. Si vous générez des données uniques pendant la phase d’initialisation, vous pouvez utiliser un hook d’exécution pour rétablir l’unicité. Avec les hooks d’exécution, vous pouvez exécuter un code spécifique immédiatement avant que Lambda ne prenne un instantané ou immédiatement après que Lambda ait repris une fonction à partir d’un instantané.
Évitez de sauvegarder un état qui dépend de l’unicité pendant l’initialisation
Pendant la phase d’initialisation de votre fonction, évitez de mettre en cache des données qui sont censées être uniques, comme la génération d’un ID unique pour la journalisation ou la configuration de seeds pour les fonctions random. Nous vous recommandons plutôt de générer des données uniques ou de configurer des seeds pour des fonctions random dans votre gestionnaire de fonction ou d’utiliser un hook d’exécution.
Les exemples suivants montrent comment générer un UUID dans le gestionnaire de fonctions.
Utilisation de générateurs de nombres pseudo aléatoires cryptographiquement sécurisés (CSPRNG)
Si votre application dépend du caractère aléatoire, nous vous recommandons d’utiliser des générateurs de nombres aléatoires cryptographiquement sécurisés (CSPRNG). Outre OpenSSL 1.0.2, les environnements d’exécution gérés par Lambda incluent également les CSPRNG intégrés suivants :
-
Java :
java.security.SecureRandom -
Python:
random.SystemRandom -
.NET :
System.Security.Cryptography.RandomNumberGenerator
Les logiciels qui obtiennent toujours des nombres aléatoires de /dev/random ou /dev/urandom maintiennent également le caractère aléatoire avec SnapStart.
Les bibliothèques de chiffrement AWS conservent automatiquement le caractère aléatoire avec SnapStart en commençant par les versions minimales spécifiées dans le tableau suivant. Si vous utilisez ces bibliothèques avec vos fonctions Lambda, assurez-vous d’utiliser les versions minimales ou ultérieures suivantes :
| Bibliothèque | Version minimale prise en charge (x86) | Version minimale prise en charge (ARM) |
|---|---|---|
| AWS libcrypto (AWS-LC) |
1.16.0 |
1.30.0 |
| AWS libcrypto FIPS |
2.0.13 |
2.0.13 |
Si vous empaquetez les bibliothèques de chiffrement ci-dessus avec vos fonctions Lambda sous forme de dépendances transitives via les bibliothèques suivantes, assurez-vous d’utiliser les versions minimales suivantes ou des versions ultérieures :
| Bibliothèque | Version minimale prise en charge (x86) | Version minimale prise en charge (ARM) |
|---|---|---|
| AWS SDK for Java 2.x |
2.23.20 |
2.26.12 |
| AWS Common Runtime pour Java |
0.29.8 |
0.29.25 |
| Amazon Corretto Crypto Provider |
2.4.1 |
2.4.1 |
| Amazon Corretto Crypto Provider FIPS |
2.4.1 |
2.4.1 |
Les exemples suivants montrent comment utiliser de CSPRNG pour garantir des séquences de nombres uniques même lorsque la fonction est restaurée à partir d’un instantané.
Outil d’analyse de SnapStart (Java uniquement)
Lambda fournit un outil d’analyse pour Java pour vous aider à vérifier le code qui suppose l’unicité. L’outil d’analyse SnapStart est un plugin SpotBugs
Pour en savoir plus sur la gestion de l’unicité avec SnapStart, consultez Starting up faster with AWS Lambda SnapStart