本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
API針對自訂執行階段使用 Lambda 執行階段
AWS Lambda 提供自HTTPAPI訂執行階段,以接收來自 Lambda 的叫用事件,並將回應資料傳回 Lambda 執行環境中。本節包含 Lambda 執行階段的API參考資料API。
適用於執行階段API版本的開放API規格可在 runtime-api.zip 中取得
若要建立API要求URL,執行階段會從AWS_LAMBDA_RUNTIME_API
環境變數取得API端點、新增API版本,然後新增所需的資源路徑。
範例 請求
curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next"
下次調用
路徑 – /runtime/invocation/next
方法 — GET
執行時間會傳送此訊息至 Lambda 來請求調用事件。回應主體包含來自調用的有效負載,該調用是包含來自函數觸發器的事JSON件數據的文檔。回應標頭包含有關該次調用的額外資料。
回應標頭
-
Lambda-Runtime-Aws-Request-Id
- 請求 ID,它將識別觸發函數調用的請求。例如:
8476a536-e9f4-11e8-9739-2dfe598c3fcd
。 -
Lambda-Runtime-Deadline-Ms
- 函數逾時的日期,以 Unix 時間毫秒為單位。例如:
1542409706888
。 -
Lambda-Runtime-Invoked-Function-Arn
— 叫用中指定ARN的 Lambda 函數、版本或別名。例如:
arn:aws:lambda:us-east-2:123456789012:function:custom-runtime
。 -
Lambda-Runtime-Trace-Id
- AWS X-Ray 追蹤標頭。例如:
Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419;Sampled=1
。 -
Lambda-Runtime-Client-Context
— 對於從 AWS 移動調用SDK,有關客戶端應用程序和設備的數據。 -
Lambda-Runtime-Cognito-Identity
— 對於來自 AWS 行動裝置的呼叫SDK,請參閱 Amazon Cognito 身分供應商的相關資料。
請勿在 GET
請求上設定逾時,因為回應可能會延遲。在 Lambda 引導執行時間與執行時間有可傳回的事件之間,執行時間處理可能會凍結幾秒鐘。
請求 ID 將追蹤 Lambda 內的調用。您可以在傳送回應時使用此值指定調用。
追蹤標頭包含追蹤 ID、父系 ID 和抽樣決策。如果對請求進行抽樣,請求將由 Lambda 或上游服務進行抽樣。執行時間應設定 _X_AMZN_TRACE_ID
為標頭的值。X-Ray SDK 讀取此內容以獲取IDs並確定是否跟踪請求。
調用回應
路徑 – /runtime/invocation/
AwsRequestId
/response
方法 — POST
在函數執行到完成之後,執行時間會傳送調用回應至 Lambda。若為同步調用,Lambda 會將回應傳送給用戶端。
範例 成功請求
REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response" -d "SUCCESS"
初始化錯誤
如果函數傳回錯誤或執行時間在初始化期間遇到錯誤,執行時間會使用此方法將錯誤報告給 Lambda。
路徑 – /runtime/init/error
方法 — POST
標頭
Lambda-Runtime-Function-Error-Type
- 執行時間遇到的錯誤類型。必要:否。
此標頭包含一個字串值。Lambda 可接受任何字串,但我們建議使用格式 <category.reason>。例如:
執行階段。 NoSuchHandler
執行階段。 APIKeyNotFound
執行階段。 ConfigInvalid
執行階段。 UnknownReason
主體參數
ErrorRequest
- 關於錯誤的資訊。必要:否。
此欄位是具有下列結構的JSON物件:
{ errorMessage: string (text description of the error), errorType: string, stackTrace: array of strings }
請注意,Lambda 接受 errorType
的任何值。
下列範例顯示 Lambda 函數錯誤訊息,其中函數無法剖析調用中提供的事件資料。
範例 函數錯誤
{ "errorMessage" : "Error parsing event data.", "errorType" : "InvalidEventDataException", "stackTrace": [ ] }
回應內文參數
StatusResponse
– 字串. 狀態信息,隨 202 回應代碼一起傳送。ErrorResponse
- 其他錯誤資訊,與錯誤回應代碼一起傳送。 ErrorResponse 包含錯誤類型和錯誤訊息。
回應代碼
-
202 - 已接受
-
403 - 禁止
-
500 - 容器錯誤。不可復原的狀態。執行時間應立即退出。
範例 初始化錯誤請求
ERROR="{\"errorMessage\" : \"Failed to load function.\", \"errorType\" : \"InvalidFunctionException\"}" curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/init/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"
調用錯誤
如果函數傳回錯誤或執行時間遇到錯誤,執行時間會使用此方法將錯誤報告給 Lambda。
路徑 – /runtime/invocation/
AwsRequestId
/error
方法 — POST
標頭
Lambda-Runtime-Function-Error-Type
- 執行時間遇到的錯誤類型。必要:否。
此標頭包含一個字串值。Lambda 可接受任何字串,但我們建議使用格式 <category.reason>。例如:
執行階段。 NoSuchHandler
執行階段。 APIKeyNotFound
執行階段。 ConfigInvalid
執行階段。 UnknownReason
主體參數
ErrorRequest
- 關於錯誤的資訊。必要:否。
此欄位是具有下列結構的JSON物件:
{ errorMessage: string (text description of the error), errorType: string, stackTrace: array of strings }
請注意,Lambda 接受 errorType
的任何值。
下列範例顯示 Lambda 函數錯誤訊息,其中函數無法剖析調用中提供的事件資料。
範例 函數錯誤
{ "errorMessage" : "Error parsing event data.", "errorType" : "InvalidEventDataException", "stackTrace": [ ] }
回應內文參數
StatusResponse
– 字串. 狀態信息,隨 202 回應代碼一起傳送。ErrorResponse
- 其他錯誤資訊,與錯誤回應代碼一起傳送。 ErrorResponse 包含錯誤類型和錯誤訊息。
回應代碼
-
202 - 已接受
-
400 - 錯誤請求
-
403 - 禁止
-
500 - 容器錯誤。不可復原的狀態。執行時間應立即退出。
範例 錯誤請求
REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 ERROR="{\"errorMessage\" : \"Error parsing event data.\", \"errorType\" : \"InvalidEventDataException\"}" curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"