本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配使用 AWS Lambda 與 AWS X-Ray
您可以使用 AWS X-Ray 來視覺化應用程式的元件、識別效能瓶頸,以及疑難排解導致錯誤的請求。您的 Lambda 函數會將追蹤資料傳送至 X-Ray,而且 X-Ray 會處理資料,以產生服務映射和可搜尋的追蹤摘要。
如果您已在調用函數的服務中啟用 X-Ray 追蹤,則 Lambda 會自動將追蹤傳送至 X-Ray。上游服務 (例如 Amazon API Gateway) 或在 Amazon EC2 上託管並利用 X-Ray 開發套件進行檢測的應用程式會取樣傳入要求,並新增追蹤標頭,告知 Lambda 是否傳送追蹤。來自上游訊息生產者的追蹤 (例如 Amazon SQS) 會自動連結至來自下游 Lambda 函數的追蹤,以建立整個應用程式的 end-to-end 檢視。如需詳細資訊,請參閱《AWS X-Ray 開發人員指南》中的追蹤事件導向應用程式。
注意
Lambda 函數若具有 Amazon Managed Streaming for Apache Kafka (Amazon MSK)、自我管理的 Apache Kafka、帶有 ActiveMQ 和 RabbitMQ 的 Amazon MQ,或是 Amazon DocumentDB 事件來源映射,目前不支援 X-Ray 追蹤。
若要使用控制台在 Lambda 函數上切換主動追蹤,請按照下列步驟操作:
開啟主動追蹤
開啟 Lambda 主控台中的 函數頁面
。 -
選擇一個函數。
選擇 組態 ,然後選擇 監控和操作工具 。
選擇 編輯 。
-
在 X-Ray 下,打開 主動追蹤 。
-
選擇 儲存 。
定價
作為 AWS 免費方案的一部分,您可以每月免費使用 X-Ray 追蹤,但有一定限制。達到閾值後,X-Ray 會收取追蹤儲存及擷取的費用。如需詳細資訊,請參閱 AWS X-Ray 定價
您的函數需要將追蹤資料上傳至 X-Ray 的許可。當您在 Lambda 主控台中啟用追蹤時,Lambda 會將必要的許可新增至函數的執行角色。否則,請將AWSXRayDaemonWriteAccess
X-Ray 無法追蹤應用程式的所有請求。X-Ray 會套用取樣演算法以確保追蹤的效率,同時仍提供所有請求的代表範本。取樣率為每秒 1 次請求和 5% 的額外請求。
注意
您無法針對函數設定 X-Ray 取樣率。
在 X-Ray 中,追蹤會記錄一或多個服務所處理之要求的相關資訊。服務記錄包含子區段層的區段。Lambda 會記錄處理調用要求的 Lambda 服務的區段,以及一個用於函數所完成的工作的區段。函數區段隨附 Initialization
、Invocation
、Restore
(僅限 Lambda SnapStart) 和 Overhead
的子區段。如需詳細資訊,請參閱 Lambda 執行環境生命週期。
注意
X-Ray 會將 Lambda 函數中未處理的例外狀況視為 Error
狀態。X-Ray 僅會在 Lambda 發生內部伺服器錯誤時記錄 Fault
狀態。如需詳細資訊,請參閱《X-Ray 開發人員指南》中的錯誤、故障和例外狀況。
Initialization
子區段代表 Lambda 執行環境生命週期的初始化階段。在此階段過程中,Lambda 會使用您已設定的資源建立或解除凍結執行環境,下載函數程式碼和所有層,初始化擴充功能,初始化執行時間,以及執行函數的初始化程式碼。
Invocation
子區段表示調用階段,其中 Lambda 調用函數處理常式。這從執行時間和延伸註冊開始,並在執行時間準備傳送響應時結束。
(僅限 Lambda SnapStart) Restore
子區段會顯示 Lambda 還原快照、載入執行期 (JVM) 和執行任何 afterRestore
執行期掛鉤所需的時間。還原快照的程序可能包括在 MicroVM 以外的活動上花費的時間。此時間在 Restore
子區段中報告。您不需要為在 MicroVM 外還原快照所花費的時間付費。
Overhead
子區段表示當執行時間傳送響應和下一次調用信號之間的時間發生的階段。在此期間,執行時間會完成與調用相關的所有工作,並準備凍結沙盒。
注意
偶爾您可能會注意到 X-Ray 追蹤中的函數初始化和調用階段之間存在很大的差距。對於使用佈建並行的函數,這是因為 Lambda 會在調用之前才初始化函數執行個體。對於使用未預留 (隨需) 並行的函數,即使沒有調用,Lambda 也可能會主動初始化函數執行個體。從視覺上看,這兩種情況都會顯示為初始化和調用階段之間的時間差距。
重要
在 Lambda 中,您可以使用 X-Ray 開發套件來擴充 Invocation
子區段與下游呼叫、註釋和中繼資料的其他子區段。您無法直接存取函數區段,或在處理常式調用範圍之外記錄完成的工作。
如需在 Lambda 追蹤的語言特定簡介,請參閱下列主題:
如需支援主動檢測之服務的完整清單,請參閱 AWS X-Ray 開發人員指南中的支援的 AWS 服務。
執行角色許可
Lambda 需要下列許可才能傳送追蹤資料到 X-Ray。新增許可到您的函數的執行角色。
這些權限包含在AWSXRayDaemonWriteAccess
AWS X-Ray 常駐程式。
X-Ray 開發套件不是直接將追蹤資料傳送至 X-Ray API,而是使用協助程序。AWS X-Ray 常駐程式是在 Lambda 環境中執行的應用程式,會偵聽包含區段和子區段的 UDP 流量。它會緩衝傳入的資料並分批寫入 X-Ray,減少追蹤調用所需的處理和記憶體負荷。
Lambda 執行時間允許常駐程式最多達 3% 的函數設定記憶體或 16 MB (以較大者為準)。如果您的函數在調用過程中耗盡內存,則執行時間會首先終止常駐程式以釋放內存。
常駐程式程序由 Lambda 完全管理,且無法由使用者設定。函數調用所產生的所有區段都會記錄在與 Lambda 函數相同的帳戶中。無法將常駐程式設定為將它們重新導向至任何其他帳戶。
如需詳細資訊,請參閱《 X-Ray 開發人員指南》中的 X-Ray 常駐程式。
透過 Lambda API 啟用主動追蹤
若要使用 AWS CLI 或 AWS 開發套件管理追蹤組態,請使用下列 API 操作:
下列範例 AWS CLI 命令啟用對名稱為 my-function 之函數的主動追蹤。
aws lambda update-function-configuration --function-name my-function \ --tracing-config Mode=Active
追蹤模式是您發布函數版本時版本特定組態的一部分。您無法變更已發佈版本上的追蹤模式。
搭配 AWS CloudFormation 啟用主動追蹤
若要在 AWS CloudFormation 範本中啟用對 AWS::Lambda::Function
資源的追蹤,請使用 TracingConfig
屬性。
範例 function-inline.yml - 追蹤組態
Resources: function: Type: AWS::Lambda::Function Properties:
TracingConfig: Mode: Active
...
對於 AWS Serverless Application Model (AWS SAM) AWS::Serverless::Function
資源,請使用 Tracing
屬性。
範例 template.yml - 追蹤組態
Resources: function: Type: AWS::Serverless::Function Properties:
Tracing: Active
...