選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 視覺化 Lambda 函數叫用 AWS X-Ray

焦點模式
使用 視覺化 Lambda 函數叫用 AWS X-Ray - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

您可以使用 AWS X-Ray 視覺化應用程式的元件、識別效能瓶頸,以及對導致錯誤的請求進行故障診斷。您的 Lambda 函數會將追蹤資料傳送至 X-Ray,而且 X-Ray 會處理資料,以產生服務映射和可搜尋的追蹤摘要。

如果您已在調用函數的服務中啟用 X-Ray 追蹤,則 Lambda 會自動將追蹤傳送至 X-Ray。上游服務 (例如 Amazon API Gateway) 或在 Amazon EC2 上託管並利用 X-Ray 開發套件進行檢測的應用程式會取樣傳入要求,並新增追蹤標頭,告知 Lambda 是否傳送追蹤。來自上游訊息生產者的追蹤 (例如 Amazon SQS) 會自動連結至來自下游 Lambda 函數的追蹤,進而建立整個應用程式的端對端檢視。如需詳細資訊,請參閱《AWS X-Ray 開發人員指南》中的追蹤事件導向應用程式

注意

Lambda 函數若具有 Amazon Managed Streaming for Apache Kafka (Amazon MSK)、自我管理的 Apache Kafka、帶有 ActiveMQ 和 RabbitMQ 的 Amazon MQ,或是 Amazon DocumentDB 事件來源映射,目前不支援 X-Ray 追蹤。

若要使用控制台在 Lambda 函數上切換主動追蹤,請按照下列步驟操作:

開啟主動追蹤
  1. 開啟 Lambda 主控台中的 函數頁面

  2. 選擇一個函數。

  3. 選擇組態,然後選擇監控和操作工具

  4. 在其他監控工具下,選擇編輯

  5. CloudWatch Application Signals 和 AWS X-Ray 下,選擇啟用 Lambda 服務追蹤

  6. 選擇 Save (儲存)。

您的函數需要將追蹤資料上傳至 X-Ray 的許可。當您在 Lambda 主控台中啟用追蹤時,Lambda 會將必要的許可新增至函數的執行角色。否則,請將 AWSXRayDaemonWriteAccess 政策新增至執行角色。

X-Ray 無法追蹤應用程式的所有請求。X-Ray 會套用取樣演算法以確保追蹤的效率,同時仍提供所有請求的代表範本。取樣率為每秒 1 次請求和 5% 的額外請求。不能針對函數設定 X-Ray 取樣率。

了解 X-Ray 追蹤

在 X-Ray 中,追蹤會記錄一或多個服務所處理之要求的相關資訊。Lambda 會在每個追蹤上記錄 2 個區段,這會在服務圖表上建立兩個節點。下圖反白顯示了這兩個節點:

具有單一函數的 X-Ray 服務映射。

左側第一個節點代表接收調用請求的 Lambda 服務。第二個節點代表您特定的 Lambda 函數。

為 Lambda 服務記錄的區段 AWS::Lambda 涵蓋準備 Lambda 執行環境所需的所有步驟。這包括排程 MicroVM、使用您設定的資源建立或取消凍結執行環境,以及下載函數程式碼和所有層。

AWS::Lambda::Function 區段用於函數要完成的工作。

注意

AWS 目前正在對 Lambda 服務實作變更。由於這些變更,您可能會看到系統日誌訊息的結構和內容,與 AWS 帳戶中不同 Lambda 函數發出的追蹤區段之間存在細微差異。

此變更會影響該函數區段的子區段。以下段落說明這些子區段的舊格式和新格式。

這些變化將在未來幾週內實作,除中國和 GovCloud 區域以外,所有 AWS 區域 中的所有函數都會轉換至使用新格式的日誌訊息和追蹤區段。

舊式 AWS X-Ray Lambda 區段結構

AWS::Lambda 區段的舊式 X-Ray 結構如下所示:

顯示包含調用區段之舊式 X-Ray 追蹤結構的圖表

在此格式中,函數區段具有 InitializationInvocationOverhead 的子區段。另外,對於 Lambda SnapStart 還有一個 Restore 子區段 (此圖表中未顯示)。

Initialization 子區段代表 Lambda 執行環境生命週期的初始化階段。在此階段,Lambda 會初始化延伸模組、初始化執行時期,並執行函數的初始化程式碼。

Invocation 子區段表示調用階段,其中 Lambda 調用函數處理常式。這從執行時間和延伸註冊開始,並在執行時間準備傳送響應時結束。

(僅限 Lambda SnapStart) Restore子區段會顯示 Lambda 還原快照、載入執行時間,以及執行任何還原後執行時間掛鉤所需的時間。還原快照的程序可能包括在 MicroVM 以外的活動上花費的時間。此時間在 Restore 子區段中報告。您不需要為在 MicroVM 外還原快照所花費的時間付費。

Overhead 子區段表示當執行時間傳送響應和下一次調用信號之間的時間發生的階段。在此期間,執行時間會完成與調用相關的所有工作,並準備凍結沙盒。

重要

您可以使用 X-Ray 開發套件來擴充 Invocation 子區段與下游呼叫、註釋和中繼資料的其他子區段。您無法直接存取函數區段,或在處理常式調用範圍之外記錄完成的工作。

如需 Lambda 執行環境階段的詳細資訊,請參閱了解 Lambda 執行環境生命週期

下圖顯示了使用舊式 X-Ray 結構的追蹤範例。

顯示包含調用區段之舊式 X-Ray 追蹤的範例圖表

請注意此範例中的兩個區段。兩者都被命名為 my-function,但其中之一的來源為 AWS::Lambda,而另一個的來源為 AWS::Lambda::Function。如果 AWS::Lambda 區段顯示錯誤,Lambda 服務就會出現問題。如果 AWS::Lambda::Function 區段顯示錯誤,表示您的函數出現了問題。

注意

偶爾您可能會注意到 X-Ray 追蹤中的函數初始化和調用階段之間存在很大的差距。對於使用佈建並行的函數,這是因為 Lambda 會在調用之前才初始化函數執行個體。對於使用未預留 (隨需) 並行的函數,即使沒有調用,Lambda 也可能會主動初始化函數執行個體。從視覺上看,這兩種情況都會顯示為初始化和調用階段之間的時間差距。

新樣式 AWS X-Ray 的 Lambda 區段結構

AWS::Lambda 區段的新式 X-Ray 結構如下所示:

顯示不包含調用區段之新式 X-Ray 追蹤結構的圖表

在此新格式中,Init 子區段和以往一樣代表 Lambda 執行環境生命週期的初始化階段。

新格式中沒有調用區段。而客戶子區段則直接連接到 AWS::Lambda::Function 區段。此區段包含以下指標做為註釋:

  • aws.responseLatency:函數執行所需的時間

  • aws.responseDuration:將回應傳輸給客戶所需的時間

  • aws.runtimeOverhead:完成執行時期所需的額外時間

  • aws.extensionOverhead:延伸功能完成所需的額外時間

下圖顯示了使用新式 X-Ray 結構的追蹤範例。

顯示不包含調用區段之新式 X-Ray 追蹤範例的圖表

請注意此範例中的兩個區段。兩者都被命名為 my-function,但其中之一的來源為 AWS::Lambda,而另一個的來源為 AWS::Lambda::Function。如果 AWS::Lambda 區段顯示錯誤,Lambda 服務就會出現問題。如果 AWS::Lambda::Function 區段顯示錯誤,表示您的函數出現了問題。

如需在 Lambda 追蹤的語言特定簡介,請參閱下列主題:

如需支援主動設備測試之服務的完整清單,請參閱《 AWS X-Ray 開發人員指南》中的 Supported AWS 服務 一節。

執行角色許可

Lambda 需要下列許可才能傳送追蹤資料到 X-Ray。新增許可到您的函數的執行角色

這些許可包含在 AWSXRayDaemonWriteAccess 受管政策中。

透過 Lambda API 啟用主動追蹤

若要使用 AWS CLI 或 AWS SDK 管理追蹤組態,請使用下列 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 ...

對於 an AWS Serverless Application Model (AWS SAM) AWS::Serverless::Function 資源,請使用 Tracing 屬性。

範例 template.yml - 追蹤組態
Resources: function: Type: AWS::Serverless::Function Properties: Tracing: Active ...
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。