全部產品
Search
文件中心

Function Compute:Spec細則

更新時間:Sep 23, 2025

本文介紹自訂運行時(Custom Runtime)的公用要求標頭、響應碼和回應標頭以及日誌格式,您可以參見這些資訊打造屬於您的自訂運行環境。

Function Compute公用要求標頭

自訂運行時從Function Compute中接收到的公用要求標頭如下表所示。如果您需要訪問阿里雲其他服務,您可能需要用到臨時AccessKey的Headers。如果您需要遷移已有的應用,可忽略下文的內容。

說明
  • 事件函數和HTTP函數均包含Common Headers。

  • 公用要求標頭是Function Compute自動產生的,主要包含許可權資訊和函數的基本資料等。

Header

描述

x-fc-request-id

Request ID。

x-fc-access-key-id

臨時AccessKey ID。

x-fc-access-key-secret

臨時AccessKey Secret。

x-fc-security-token

臨時Security Token。

x-fc-function-handler

函數的Handler,如果Runtime本身就是函數(例如Custom Runtime或者Custom Container函數),則該值無意義,設定為一個隨機字串即可。

x-fc-function-memory

函數最大能使用的記憶體。

x-fc-function-initializer

Initializer函數的Handler,如果Runtime本身就是函數(例如Custom Runtime或者Custom Container函數),則該值無意義,設定為一個隨機字串即可。

x-fc-initialization-timeout

Initializer函數執行的逾時時間。

x-fc-instance-lifecycle-pre-stop-handler

PreStop函數的Handler,如果Runtime本身就是函數(例如Custom Runtime或者Custom Container函數),則該值無意義,設定為一個隨機字串即可。

x-fc-instance-lifecycle-pre-freeze-handler

PreFreeze函數的Handler,如果Runtime本身就是函數(例如Custom Runtime或者Custom Container函數),則該值無意義,設定為一個隨機字串即可。

x-fc-region

函數所在的地區。

x-fc-account-id

函數所有者的UID。

x-fc-qualifier

函數調用時指定的服務版本或別名。更多資訊,請參見使用版本和別名實現灰階發布

x-fc-version-id

函數調用時指定的服務版本。

x-fc-function-name

函數名稱。

x-fc-service-name

函數所在的服務的名字。

x-fc-service-logproject

函數所在服務配置的記錄項目。

x-fc-service-logstore

函數所在服務配置的日誌庫。

x-fc-control-path

函數的請求類型。

對於Custom Runtime或Custom Container,您可以根據Headers中的參數來判斷函數調用是HTTP函數調用還是事件函數調用。參數資訊如下:

  • /invoke:該請求為事件函數調用。/invoke表示是Invoke函數調用請求。

  • /http-invoke:該請求為HTTP函數調用。/http-invoke表示是HTTP invoke函數調用請求,Function Compute會將您的請求(包括Path、Body和Headers)加上Common Headers後轉寄給Custom Runtime或Custom Container,Custom Runtime或Custom Container返回的回應標頭和響應體則會被返回給用戶端。

  • /initialize/initialize表示第一次建立執行環境時,Function Compute自動發起的Initialize函數調用請求。在容器的生命週期內,有且僅成功調用一次,類似於Class建構函式。

Function Compute響應碼和回應標頭

Custom Runtime本質是您實現的HTTP Server,因此每一次函數調用都是一次HTTP請求,即每次響應都有響應碼和回應標頭。

  • 響應碼StatusCode

    • 200:成功狀態。

    • 404:失敗狀態。

  • 回應標頭x-fc-status

    • 200:成功狀態。

    • 404:失敗狀態。

通過Headers中的x-fc-status響應,向Function Compute彙報本地函數是否執行成功。

  • 不設定x-fc-statusFunction Compute預設本次調用是成功執行的,但是您的函數可能有異常,沒有向Function Compute彙報,Function Compute會認為這次函數執行沒有報錯,在商務邏輯上可能沒有影響,但是在監控可觀測性上會有影響。如下圖所示:image8hanshujisuanruntime

  • 設定x-fc-status:當您的函數存在異常,通過x-fc-status響應向Function Compute彙報本次函數執行失敗,並將錯誤堆棧資訊列印到日誌中。如下圖所示:image9runtimefc

說明

在返回的HTTP響應中,建議您同時設定StatusCodex-fc-status

函數日誌格式

建議您在建立服務時啟用日誌功能,Custom Runtime中所有列印到標準輸出(Stdout)的日誌會自動收集到您指定的Log Service中。具體步驟,請參見配置日誌

Function Compute在其他運行環境,即除Custom Runtime和Custom Container以外的運行環境中調用函數時,如果要求標頭中包含x-fc-log-type" = "Tail",那麼返回的回應標頭包含x-fc-log-result的內容就是函數執行時列印的日誌,日誌上限為4 KB。您可以在Function Compute控制台函數執行結果中查看該日誌。如果您希望在控制台的執行結果中看到Custom Runtime的作業記錄,需要在代碼中記錄請求開始和結束的日誌。

重要

通過HTTP觸發器匿名調用函數時,如果要求標頭包含x-fc-log-type" = "Tail",可能導致敏感資訊泄露,建議您開啟鑒權,詳見認證鑒權

日誌內容

是否必選

代碼

啟動Runtime

說明

該內容為函數冷啟動的標誌。

FunctionCompute ${runtime} runtime inited.

說明

${runtime}為自訂語言類型,建議您避免使用Function Compute官方語言名稱,例如Node.js、Python或PHP等。

Invoke開始的日誌

FC Invoke Start RequestId: ${RequestId}

Invoke結束的日誌

FC Invoke End RequestId: ${RequestId}

Initialize開始的日誌

說明

如果是Initializer函數,則需要記錄。

FC Initialize Start RequestId: ${RequestId}

Initialize結束的日誌

說明

如果是Initializer函數,則需要記錄。

FC Initialize End RequestId: ${RequestId}

除了以上特殊的資訊外,推薦您在自己的日誌中包含請求ID,方便日後診斷問題。推薦日誌格式為$utcdatetime(yyyy-MM-ddTHH:mm:ss.fff) $requestId [$Level] $message

說明

不同語言下指定記錄層級的介面不同,請您根據實際運行環境設定。更多資訊,請參見基礎資訊

相關文檔

如果您還需要瞭解自訂運行時的運行環境資訊、各語言啟動命令和啟動參數的配置以及執行個體生命週期回呼函數的配置,請參見以下文檔: