Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Handhabung der Eindeutigkeit mit Lambda SnapStart
Wenn Aufrufe für eine SnapStart-Funktion hochskaliert werden, verwendet Lambda einen einzelnen initialisierten Snapshot, um mehrere Ausführungsumgebungen fortzusetzen. Wenn Ihr Initialisierungscode eindeutigen Inhalt generiert, der im Snapshot enthalten ist, ist der Inhalt möglicherweise nicht eindeutig, wenn er in Ausführungsumgebungen wiederverwendet wird. Um die Eindeutigkeit bei der Verwendung von SnapStart zu gewährleisten, müssen Sie nach der Initialisierung eindeutige Inhalte erstellen. Dazu gehören eindeutige IDs, eindeutige Geheimnisse und Entropie, die zum Generieren von Pseudozufälligkeiten verwendet wird.
Im Folgenden finden Sie einige bewährte Methoden für die Aufrechterhaltung der Eindeutigkeit Ihres Codes. Für Java-Funktionen bietet Lambda auch ein Open-Source-Scan-Tool SnapStart, mit dem sich überprüfen lässt, ob der Code Eindeutigkeit voraussetzt. Wenn Sie während der Initialisierungsphase eindeutige Daten generieren, können Sie eine Laufzeit-Hook verwenden, um die Eindeutigkeit wiederherzustellen. Mit Laufzeit-Hooks können Sie bestimmten Code ausführen, unmittelbar bevor Lambda einen Snapshot aufnimmt oder unmittelbar nachdem Lambda eine Funktion aus einem Snapshot fortsetzt.
Vermeiden des Speicherns eines Zustands, der von der Eindeutigkeit während der Initialisierung abhängt
Vermeiden Sie während der Initialisierungsphase Ihrer Funktion das Zwischenspeichern von Daten, die eindeutig sein sollen, z. B. das Generieren einer eindeutigen ID für die Protokollierung oder das Setzen von Seeds für Zufallsfunktionen. Stattdessen empfehlen wir Ihnen, eindeutige Daten zu generieren oder Seeds für Zufallsfunktionen in Ihrem Funktionshandler festzulegen – oder einen Laufzeit-Hook zu verwenden.
Die folgenden Beispiele zeigen, wie eine UUID im Funktionshandler erzeugt werden kann.
Kryptografisch sichere Pseudozufallszahlengeneratoren (CSPRNGs) verwenden
Wenn Ihre Anwendung von Zufälligkeit abhängt, empfehlen wir Ihnen, kryptographisch sichere Zufallszahlengeneratoren (CSPRNGs) zu verwenden. Zusätzlich zu OpenSSL 1.0.2 enthalten die verwalteten Lambda-Laufzeiten auch die folgenden integrierten CSPRNGs:
-
Java:
java.security.SecureRandom
-
Python:
SystemRandom
-
.NET:
System.Security.Cryptography.RandomNumberGenerator
Software, die immer Zufallszahlen von /dev/random
oder /dev/urandom
erhält, behält auch die Zufälligkeit in SnapStart bei.
AWS-Kryptographie-Bibliotheken erhalten automatisch die Zufälligkeit mit SnapStart ab den in der folgenden Tabelle angegebenen Mindestversionen. Wenn Sie diese Bibliotheken mit Ihren Lambda-Funktionen verwenden, stellen Sie sicher, dass Sie die folgenden Mindestversionen oder neuere Versionen verwenden:
Bibliothek | Unterstützte Mindestversion (x86) | Unterstützte Mindestversion (ARM) |
---|---|---|
AWS libcrypto (AWS-LC) |
1.16.0 |
1.30.0 |
AWS libcrypto FIPS |
2.0.13 |
2.0.13 |
Wenn Sie die vorangehenden kryptografischen Bibliotheken mit Ihren Lambda-Funktionen als transitive Abhängigkeiten über die folgenden Bibliotheken paketieren, stellen Sie sicher, dass Sie die folgenden Mindestversionen oder neuere Versionen verwenden:
Bibliothek | Unterstützte Mindestversion (x86) | Unterstützte Mindestversion (ARM) |
---|---|---|
AWS SDK for Java 2.x |
2.23.20 |
2.26.12 |
AWS Allgemeine Laufzeit für Java |
0.29.8 |
0.29.25 |
Kryptoanbieter Amazon Corretto |
2.4.1 |
2.4.1 |
Amazon Corretto Kryptoanbieter FIPS |
2.4.1 |
2.4.1 |
Die folgenden Beispiele zeigen, wie CSPRNGs verwendet werden können, um eindeutige Zahlenfolgen zu garantieren, selbst wenn die Funktion aus einem Snapshot wiederhergestellt wird.
SnapStart-Scan-Tool (nur Java)
Lambda bietet ein Scan-Tool für Java an, um nach Code zu suchen, der Eindeutigkeit voraussetzt. Das SnapStart-Scan-Tool ist ein Open-Source-SpotBugs
Weitere Informationen zum Umgang mit Einzigartigkeit mit SnapStart finden Sie im AWS-Compute-Blog unter Schnelleres Starten mit AWS Lambda SnapStart