同步叫用
當您以同步方式叫用函數時,Lambda 會執行函數並等候回應。當函數執行完成時,Lambda 會從函數的程式碼傳回回應,其中包含叫用的函數版本等額外資料。若要透過 AWS CLI 以同步方式叫用函式,請使用 invoke
命令。
aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{ "key": "value" }' response.json
如果您使用 AWS CLI 的第 2 版,則需要 cli-binary-format 選項。您也可以在 AWS CLI config 檔案中設定此選項。
您應該會看到下列輸出:
{ "ExecutedVersion": "$LATEST", "StatusCode": 200 }
下圖顯示以同步方式叫用 Lambda 函數的用戶端。Lambda 會將事件直接傳送到函數,並將函數的回應傳送回叫用者。

payload
是包含 JSON 格式事件的字串。AWS CLI 從該函數寫入回覆的檔案名稱是 response.json
。如果函式傳回物件或錯誤,則回應是 JSON 格式的物件或錯誤。如果函式結束,且沒有發生錯誤,則回應為 null
。
命令的輸出會顯示於終端機,包括來自 Lambda 的回應中標頭中的資訊。這包括處理事件的版本 (當您使用別名時很實用),以及 Lambda 傳回的狀態碼。如果 Lambda 能夠執行函數,則狀態碼為 200,即使函數傳回了錯誤。
對於逾時很久的函式,您的用戶端可能在等待回應的同時,在同步叫用期間中斷連線。設定您的 HTTP 用戶端、SDK、防火牆、Proxy 或作業系統,以透過逾時或持續作用設定允許長時間連線。
如果 Lambda 無法執行函數,錯誤則會顯示在輸出中。
aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload value response.json
您應該會看到下列輸出:
An error occurred (InvalidRequestContentException) when calling the Invoke operation: Could not parse request body into json: Unrecognized token 'value': was expecting ('true', 'false' or 'null') at [Source: (byte[])"value"; line: 1, column: 11]
AWS CLI 是開放原始碼工具,可讓您在命令列 shell 中使用命令來與 AWS 服務互動。若要完成本節中的步驟,您必須執行下列各項:
您可以透過 AWS CLI,使用 --log-type
命令選項來擷取要叫用的日誌。其回應將包含 LogResult
欄位,內含該次叫用的 base64 編碼日誌 (最大達 4 KB)。
範例 擷取日誌 ID
下列範例顯示如何從名稱為 my-function
的函數的 LogResult
欄位來擷取日誌 ID。
aws lambda invoke --function-name my-function out --log-type Tail
您應該會看到下列輸出:
{ "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }
範例 解碼日誌
在相同的命令提示中,使用 base64
公用程式來解碼日誌。下列範例顯示如何擷取 my-function
的 base64 編碼日誌。
aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text | base64 -d
您應該會看到下列輸出:
START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST "AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib", END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Duration: 79.67 ms Billed Duration: 80 ms Memory Size: 128 MB Max Memory Used: 73 MB
該 base64
公用程式可在 Linux、macOS 和 Ubuntu on Windowsbase64 -D
。
如需有關 Invoke
API 的詳細資訊 (包括參數、標頭和錯誤的完整清單),請參閱叫用。
當您直接叫用函式時,您可以檢查回應中是否有錯誤並重試。AWS CLI 和 AWS SDK 也會在用戶端逾時、調節和服務錯誤時自動重試。如需詳細資訊,請參閱 AWS Lambda 中錯誤處理和自動重試。