Lambda 叫用模式 - AWS Lambda 安全概觀

Lambda 叫用模式

叫用 API 可以透過兩種模式呼叫:事件模式和請求回應模式。

  • 事件模式會將酬載排入佇列,以進行非同步叫用。

  • 請求回應模式會使用提供的酬載,以同步方式叫用函數,並立即傳回回應。

在這兩種情況下,函數執行都一律會在 Lambda 執行環境中進行,但酬載會採取不同的路徑。如需詳細資訊,請參閱本文件中的〈Lambda 執行環境〉。

您也可以使用其他代您執行叫用的 AWS 服務。要使用哪一種叫用模式,取決於您正在使用的 AWS 服務,以及其設定方式。如需其他 AWS 服務與 Lambda 整合方式的額外資訊,請參閱搭配其他服務使用 AWS Lambda

當 Lambda 收到請求回應叫用時,會直接將該請求傳遞給叫用服務。如果叫用服務無法使用,呼叫端可能會暫時將酬載用戶端排入佇列,以重試叫用一定次數。若叫用服務收到酬載,服務接著會嘗試識別可用於該請求的執行環境,並將酬載傳遞給該執行環境以完成叫用。如果不存在現有或適合的執行環境,則會動態建立一個執行環境以回應請求。在傳輸途中,傳送到叫用服務的叫用酬載會受到 TLS 1.2+ 保護。Lambda 服務內的流量 (自負載平衡器以下) 會經過隔離的內部 virtual private cloud (VPC),這個 virtual private cloud 在傳送請求的 AWS 區域內會由 Lambda 服務所擁有。

顯示 AWS Lambda 請求回應叫用模型的圖表。

圖 2 ‒ AWS Lambda 請求回應叫用模型

事件叫用模式酬載一律會在叫用前排入佇列以進行處理。所有酬載都會排入佇列,以在 Amazon Simple Queue Service (Amazon SQS) 佇列中進行處理。排入佇列的事件一律會在傳輸中受到 TLS 1.2+ 保護,但目前並未受到靜態加密。由於 Lambda 使用的 Amazon SQS 佇列是由 Lambda 服務所管理,因此您做為客戶無法看見。排入佇列的事件可以存放在共享的佇列中,但取決於各種無法由客戶直接控制的因素 (例如叫用率、事件大小等),可能會遷移或指派給專用的佇列。

排入佇列的事件會由 Lambda 的輪詢器機群以批次方式擷取。輪詢器機群是一組 EC2 執行個體,其目的是處理已排入佇列但尚未處理的事件叫用。當輪詢器機群擷取已排入佇列且需要處理的事件時,會採用與客戶在請求回應模式叫用中所採用的相同方式,將事件傳遞給叫用服務。

若無法執行叫用,輪詢器機群將會暫時將事件存放在主機的記憶體中,直到可以成功完成執行,或是直到超過執行重試的嘗試次數為止。酬載資料永遠不會寫入輪詢器機群本身的磁碟。輪詢器機群可以跨 AWS 客戶分配任務,以取得最短的叫用時間。如需哪些服務可能會採取事件叫用模式的詳細資訊,請參閱搭配其他服務使用 AWS Lambda