本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
以 Lambda 處理獨特性 SnapStart
當呼叫在 SnapStart 函數上擴展時,Lambda 會使用單一初始化快照來恢復多個執行環境。如果您的初始化程式碼會產生包含在快照中的唯一內容,則在跨執行環境中重複使用該內容時,該內容可能不是唯一的。為了在使用時保持唯一性 SnapStart,您必須在初始化後生成唯一的內容。這包括用於生成偽隨性的獨特,獨特的秘密和熵。IDs
以下是維持程式碼唯一性的建議最佳實務。Lambda 也提供開放原始碼SnapStart 掃描工具,協助檢查是否具有唯一性的程式碼。如果您在初始化階段產生唯一資料,便可使用執行階段掛鉤來還原唯一性。使用執行階段掛鉤,您可以在 Lambda 建立快照前執行特定程式碼,或在 Lambda 從快照恢復函數後立即執行特定程式碼。
避免儲存初始化期間依賴唯一性的狀態
在函數的初始化階段,請避免快取預定為唯一的資料,例如產生用於日誌記錄的唯一 ID。相反地,建議您在函數處理常式中產生唯一的資料,或使用執行階段掛鉤。
範例 - 在函數處理常式中產生唯一 ID
下面的實例演示瞭如何在函數處理程序UUID中生成一個。
import java.util.UUID; public class Handler implements RequestHandler<String, String> { private static UUID uniqueSandboxId = null; @Override public String handleRequest(String event, Context context) {
if (uniqueSandboxId == null) uniqueSandboxId = UUID.randomUUID();
System.out.println("Unique Sandbox Id: " + uniqueSandboxId); return "Hello, World!"; } }
使用加密安全的偽隨機數生成器()CSPRNGs
如果您的應用程式依賴於隨機性,我們建議您使用加密編譯安全的隨機數產生器 ()。CSPRNGsJava 的 Lambda 受管執行階段包含兩個內建 CSPRNGs (Open SSL 1.0.2 和java.security.SecureRandom
),可自動維護隨機性。 SnapStart始終從中獲取隨機數/dev/random
或/dev/urandom
保持隨機性的軟件。 SnapStart
AWS 從下表中指定的最小版本 SnapStart 開始,密碼編譯程式庫會自動維持隨機性。如果您將這些程式庫與 Lambda 函數搭配使用,請務必使用下列最低版本或更新版本:
程式庫 | 最低支援版本 (x86) | 最低支援版本 (ARM) |
---|---|---|
AWS 利布加密貨幣 (AWS-LC) |
1.16.0 |
1.30.0 |
AWS 利桑比加密 FIPS |
2.0.13 |
2.0.13 |
如果您透過下列程式庫將先前的加密程式庫與 Lambda 函數一起封裝為傳遞相依性,請確定您使用下列最低版本或更新版本:
程式庫 | 最低支援版本 (x86) | 最低支援版本 (ARM) |
---|---|---|
AWS SDK for Java 2.x |
2.23.20 |
2.26.12 |
AWS Java 的通用運行時 |
0.29.8 |
0.29.25 |
Amazon Corretto 加密提供商 |
2.4.1 |
2.4.1 |
Amazon Corretto 加密提供商 FIPS |
2.4.1 |
2.4.1 |
範例 — 爪哇. 安全性. SecureRandom
下列範例使用 java.security.SecureRandom
,即使從快照還原函數,也會產生唯一的序號。
import java.security.SecureRandom; public class Handler implements RequestHandler<String, String> {
private static SecureRandom rng = new SecureRandom();
@Override public String handleRequest(String event, Context context) { for (int i = 0; i < 10; i++) { System.out.println(rng.next()); } return "Hello, World!"; } }
SnapStart 掃描工具
Lambda 提供掃描工具,可協助檢查確保唯一性的程式碼。 SnapStart 掃描工具是一種開放原始碼SpotBugs
若要深入了解如何使用處理唯一性 SnapStart,請參閱 AWS Compute 部落格 AWS Lambda SnapStart上的加快啟