AWS-Lambda 使用入門

AWS-Lambda 使用入門

場景:

在該語法中,需要注意以下方面:

event

此示例中的處理程式程式碼只列印部分執行時資訊。每個列印語句均在 CloudWatch 中建立一個日誌條目。如果您使用 Lambda 控制檯呼叫函式,則控制檯會顯示日誌。

日誌記錄

您的 Lambda 函式可包含日誌記錄語句。AWS Lambda 將這些日誌寫入 CloudWatch。如果您使用 Lambda 控制檯呼叫 Lambda 函式,控制檯將顯示相同的日誌。

以下 Python 語句生成日誌條目:

print

在呼叫此 Lambda 函式時,它將引發異常,並且 AWS Lambda 返回以下錯誤訊息:

{
"errorMessage": "I failed!",
"stackTrace": [
[
"/var/task/lambda_function.py",
3,
"my_always_fails_handler",
"raise Exception('I failed!')"
]
],
"errorType": "Exception"
}

詳細資訊參考官方文件:https://docs.aws.amazon.com/z…

注意事項

AWS Lambda 限制

AWS Lambda 在使用中會強加一些限制,例如,程式包的大小或 Lambda 函式在每次呼叫中分得的記憶體量。

每個呼叫的 AWS Lambda 資源限制

資源限制
記憶體分配範圍最小值 = 128 MB/最大值 = 1536 MB (增量為 64 MB). 如果超過最大記憶體使用量,則函式呼叫將會終止。
臨時磁碟容量(“/tmp”空間)512MB
檔案描述符數1024
過程和執行緒數(合併總數量)1024
每個請求的最大執行時長300 秒
Invoke 請求正文有效負載大小 (RequestResponse/同步呼叫)6MB
Invoke 請求正文有效負載大小 (Event/非同步呼叫)128 K

每個區域的 AWS Lambda 賬戶限制

資源預設限制
併發執行數1000

併發執行是指在任意指定時間對您的函式程式碼的執行數量。您可以估計併發執行計數,但是,根據 Lambda 函式是否處理來自基於流的事件源的事件,併發執行計數會有所不同。

基於流的事件源 – 如果您建立 Lambda 函式處理來自基於流的服務(Amazon Kinesis Data Streams 或 DynamoDB 流)的事件,則每個流的分割槽數量是併發度單元。如果您的流有 100 個活動分割槽,則最多會有 100 個 Lambda 函式呼叫併發執行。然後,每個 Lambda 函式按照分割槽到達的順序處理事件。

並非基於流的事件源 – 如果您建立 Lambda 函式處理來自並非基於流的事件源(例如,Amazon S3 或 API 閘道器)的事件,則每個釋出的事件是一個工作單元。因此,這些事件源釋出的事件數(或請求數)影響併發度。

您可以使用以下公式來估算併發 Lambda 函式呼叫數。

events (or requests) per second * function duration

例如,考慮一個處理 API Gateway 的 Lambda 函式。假定 Lambda 函式平均用時 0.3 秒,API Gateway 每秒請求 1000 次。因此,Lambda 函式有 300 個併發執行。

具體資訊參考Lambda 函式並行執行

AWS Lambda 部署限制

專案預設限制
Lambda 函式部署程式包大小 (壓縮的 .zip/.jar 檔案)50 MB
每個區域可以上傳的所有部署程式包的總大小75GB
可壓縮到部署程式包中的程式碼/依賴項的大小 (未壓縮的 .zip/.jar 大小).注意每個 Lambda 函式都會在其的 /tmp 目錄中接收到額外的 500 MB 的非永續性磁碟空間。該 /tmp 目錄可用於在函式初始化期間載入額外的資源,如依賴關係庫或資料集。250MB
環境變數集的總大小4 KB

本文內容主要參考 AWS Lambda 官方文件,詳細資訊請訪問 https://docs.aws.amazon.com/z…

參考連結

AWS Lambda 開發入門

建立部署程式包 (Python)

Lambda 函式並行執行

高併發解決方案

如何優化網站高併發訪問?

高併發的解決方案

Serverless開發程式設計思想

一個簡單的 Serverless 架構例子

使用lambda帶來的架構優勢


最後,感謝女朋友支援。

歡迎關注(April_Louisa)請我喝芬達