本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 記錄 Web Function API 呼叫 AWS CloudTrail
使用 AWS CloudTrail,您可以追蹤使用者、角色或在 AWS Lambda Web 函數 AWS 服務 中採取的動作。CloudTrail 會提供這些動作的記錄。CloudTrail 會將 Web 函數呼叫擷取為資料事件。您可以使用此資訊來判斷誰叫用 Web 函數、何時以及從何處叫用 Web 函數,這有助於安全分析和操作稽核。
CloudTrail 中的 Web 函數資料事件
資料事件提供有關在資源上執行之操作的資訊。例如,叫用 Web 函數端點是資料事件。這些操作也稱為資料平面操作,通常為大量操作。根據預設,CloudTrail 不會記錄資料事件,CloudTrail 事件歷史記錄也不會記錄它們。
資料事件需支付額外的費用。如需詳細資訊,請參閱 CloudTrail 定價
您可以使用 CloudTrail 主控台 AWS CLI或 CloudTrail API 操作來記錄AWS::Lambda::WebFunction資源類型的資料事件。CloudTrail 會在提供請求 AWS 區域 的 中記錄每個叫用,並awsRegion識別該區域。與日誌和指標不同,調用事件不會集中到主要區域。對於 MultiRegion或 PerRegion端點,請使用多區域追蹤或事件資料存放區,以便記錄端點提供的每個區域中的呼叫。
下表顯示 Web 函數的資料事件類型。
| 資料事件類型 (主控台) | resources.type 值 | 記錄到 CloudTrail 的資料 API |
|---|---|---|
| Lambda Web 函數 | AWS::Lambda::WebFunction |
InvokeWebFunctionEndpoint |
CloudTrail 會記錄 Web 函數呼叫的下列金鑰識別符:
| 識別符 | Value |
|---|---|
eventSource | lambda.amazonaws.com |
eventName | InvokeWebFunctionEndpoint。 這是要篩選的值。 |
| IAM 動作 | lambda:InvokeWebFunctionEndpoint |
readOnly | false,因為 呼叫會執行您的函數程式碼。 |
resources.type | AWS::Lambda::WebFunction |
resources.ARN | 函數 ARN,而非端點 ARN。因此,追蹤選取器可在函數層級運作。 |
下列進階事件選取器只會記錄單一 Web 函數的呼叫。
[ { "Name": "web-function-invokes", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Lambda::WebFunction"] }, { "Field": "resources.ARN", "Equals": ["arn:aws:lambda:us-east-1:111122223333:web-function/hello-world"] } ] } ]
若要開啟線索上的資料事件,請使用下列程序。
開啟並驗證 Web 函數資料事件 (AWS CLI)
-
建立或選擇將記錄資料事件的線索。如需說明,請參閱AWS CloudTrail 《 使用者指南》中的記錄資料事件。
-
將下列進階事件選取器儲存為
web-function-data-events.json。它記錄一個 Web 函數的調用。若要記錄帳戶中每個 Web 函數的調用,請移除resources.ARN欄位選擇器。[ { "Name": "web-function-invocations", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Lambda::WebFunction"] }, { "Field": "resources.ARN", "Equals": [ "arn:aws:lambda:us-east-1:111122223333:web-function/my-web-app" ] } ] } ] -
將選取器套用至線索:
aws cloudtrail put-event-selectors \ --trail-namemy-trail\ --advanced-event-selectors file://web-function-data-events.json重要
put-event-selectors會取代追蹤的現有事件選取器。如果線索已記錄其他事件,請在相同的檔案中包含其選取器。 -
使用測試請求叫用端點。
-
查詢 的線索目的地
eventName = InvokeWebFunctionEndpoint。驗證可用於身分驗證路徑的函數 ARN、事件時間、請求 ID、呼叫者資訊,以及任何條件式錯誤欄位。如果選取器正常運作,查詢會傳回測試請求InvokeWebFunctionEndpoint的事件,類似於 中的範例範例:成功叫用 (未經驗證的呼叫者)。
若要改為在 CloudTrail Lake 事件資料存放區中記錄資料事件,請將相同的欄位選擇器新增至事件資料存放區。如需詳細資訊,請參閱「AWS CloudTrail 使用者指南」。
InvokeWebFunctionEndpoint 事件中的欄位
下表說明 InvokeWebFunctionEndpoint事件中的欄位。
| 欄位 | 備註 |
|---|---|
eventVersion |
事件格式的版本。 |
eventSource |
一律為 lambda.amazonaws.com。 |
eventName |
一律為 InvokeWebFunctionEndpoint。 |
eventCategory |
一律為 Data。 |
eventType |
事件類型,例如 AwsApiCall。 |
readOnly |
一律為 false,因為 呼叫會執行您的函數程式碼。 |
managementEvent |
一律為 false。 |
eventTime |
Lambda 記錄事件的日期和時間,以 UTC 為單位。為了成功調用,Lambda 會在函數開始回應時記錄事件,因此 eventTime可以晚於請求到達的時間。 |
sourceIPAddress |
提出請求的 IP 地址。 |
userAgent |
發起人用來提出請求的客服人員。呼叫者傳送User-Agent標頭時出現。 |
requestParameters |
包含 endpointArn,即叫用端點的 ARN。不會記錄請求承載。 |
responseElements |
一律為 null。 |
resources |
包含一個具有 accountId、 type和 函數ARN的項目。 |
additionalEventData |
包含 functionRevisionArn,即提供請求之修訂的 ARN。此欄位存在於每個事件上,包括拒絕。 |
tlsDetails |
請求的 TLS 版本、密碼套件和主機標頭。 |
userIdentity |
發起人的身分。如需詳細資訊,請參閱下列清單。 |
sharedEventID |
當 CloudTrail 將相同的事件交付至多個事件時出現 AWS 帳戶。 |
errorCode, errorMessage |
僅出現於錯誤事件。 |
requestID, eventID,
recipientAccountId, awsRegion |
識別請求、事件、收件人 AWS 帳戶和 的標準 CloudTrail 欄位 AWS 區域。 |
Web 函數事件使用以下 ARN 形狀:
-
函數 (
resources[].ARN) –arn:aws:lambda:us-east-1:123456789012:web-function/my-fn -
端點 (
requestParameters.endpointArn) –arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/endpoint/my-endpoint -
修訂 (
additionalEventData.functionRevisionArn) –arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/revision/rev-a1b2c
userIdentity 欄位取決於發起人如何驗證:
-
使用
userIdentity類型 記錄未驗證的調用Unknown。 -
IAM 驗證的呼叫者會使用自己的委託人記錄。例如,使用臨時登入資料的呼叫者會顯示類型
AssumedRole、arn和sessionContext。 -
不填入
accessKeyId欄位。
錯誤事件
CloudTrail 也會記錄呼叫者驗證後失敗的呼叫嘗試。下表說明這些錯誤事件。
| 案例 | errorCode | errorMessage |
|---|---|---|
| 來電者未授權 | AccessDenied |
使用者無權執行: lambda:InvokeWebFunctionEndpoint |
| 已達到請求率、並行或 vCPU 限制 (端點或帳戶) | ThrottlingException |
已超過費率 |
| 服務錯誤 | ServiceException |
服務錯誤 |
| 應用程式錯誤或無效的用戶端請求 | 不適用 | 視為成功的 API 呼叫。呼叫已到達並執行 函數。 |
成功的調用沒有 errorCode或 errorMessage。授權拒絕會記錄為 AccessDenied。CloudTrail 不會記錄身分驗證失敗的請求,例如簽章遺失、格式錯誤、無效或過期的請求,也不會記錄 Lambda 在身分驗證之前拒絕的請求,例如對 0 rateLimit的端點的請求。也不會記錄內部身分驗證基礎設施故障。若要偵測遭拒請求的峰值,請在 AWS/Lambda/Web 命名空間HTTPResponseStatusClass4XX中警示 上的 。
範例:成功叫用 (未經驗證的呼叫者)
下列範例顯示未經驗證的呼叫者成功呼叫 。
{ "Records": [ { "eventVersion": "1.11", "userIdentity": { "type": "Unknown" }, "eventTime": "2026-09-22T18:41:07Z", "eventSource": "lambda.amazonaws.com", "eventName": "InvokeWebFunctionEndpoint", "awsRegion": "us-east-1", "sourceIPAddress": "203.0.113.42", "userAgent": "curl/8.4.0", "requestParameters": { "endpointArn": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/endpoint/my-endpoint" }, "responseElements": null, "additionalEventData": { "functionRevisionArn": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/revision/rev-a1b2c" }, "requestID": "b1f8a4c2-7e3d-4a19-9f6b-2c5d8e0a1234", "eventID": "d4c3b2a1-5f6e-7a8b-9c0d-1e2f3a4b5c6d", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::Lambda::WebFunction", "ARN": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn" } ], "eventType": "AwsApiCall", "managementEvent": false, "recipientAccountId": "123456789012", "eventCategory": "Data", "tlsDetails": { "tlsVersion": "TLSv1.3", "cipherSuite": "TLS_AES_128_GCM_SHA256", "clientProvidedHostHeader": "bcdfghjklmnpqrst.b7t.lambda-web.us-east-1.on.aws" } } ] }
對於經 IAM 驗證的發起人, userIdentity 欄位會改為承載發起人的委託人,例如AssumedRole使用 arn和 的類型sessionContext,其餘欄位保持不變。
範例:拒絕叫用
錯誤事件帶有 errorCode和 errorMessage。下列範例顯示拒絕的調用。
{ "Records": [ { "eventVersion": "1.11", "userIdentity": { "type": "AssumedRole", "principalId": "ARO01EXAMPLEID:session-name", "arn": "arn:aws:sts::123456789012:assumed-role/app-invoke-role/session-name", "accountId": "123456789012", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "ARO01EXAMPLEID", "arn": "arn:aws:iam::123456789012:role/app-invoke-role", "accountId": "123456789012", "userName": "app-invoke-role" }, "attributes": { "creationDate": "2026-09-22T18:39:55Z", "mfaAuthenticated": "false" } } }, "eventTime": "2026-09-22T18:42:13Z", "eventSource": "lambda.amazonaws.com", "eventName": "InvokeWebFunctionEndpoint", "awsRegion": "us-east-1", "sourceIPAddress": "203.0.113.42", "userAgent": "aws-sdk-python/1.34.0", "errorCode": "AccessDenied", "errorMessage": "User is not authorized to perform: lambda:InvokeWebFunctionEndpoint", "requestParameters": { "endpointArn": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/endpoint/my-endpoint" }, "responseElements": null, "additionalEventData": { "functionRevisionArn": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/revision/rev-a1b2c" }, "requestID": "c2e9b5d3-8f4e-4b2a-a07c-3d6e9f1b2345", "eventID": "e5d4c3b2-6a7f-8b9c-0d1e-2f3a4b5c6d7e", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::Lambda::WebFunction", "ARN": "arn:aws:lambda:us-east-1:123456789012:web-function/my-fn" } ], "eventType": "AwsApiCall", "managementEvent": false, "recipientAccountId": "123456789012", "eventCategory": "Data", "tlsDetails": { "tlsVersion": "TLSv1.3", "cipherSuite": "TLS_AES_128_GCM_SHA256", "clientProvidedHostHeader": "bcdfghjklmnpqrst.b7t.lambda-web.us-east-1.on.aws" } } ] }
CloudTrail 中的管理事件
根據預設,CloudTrail 會記錄 Web 函數管理事件。您可以在 CloudTrail 事件歷史記錄中檢視過去 90 天的管理事件,而無需建立追蹤。若要保留更長的時間,請建立線索或 CloudTrail Lake 事件資料存放區。如需詳細資訊,請參閱《AWS CloudTrail 使用者指南》中的記錄管理事件。
CloudTrail 會將下列 Web 函數操作記錄為管理事件。每個事件eventName的欄位與操作名稱相同。
| 資源或任務 | 作業 |
|---|---|
| Web 函數 | CreateWebFunction, GetWebFunction,
ListWebFunctions, DeleteWebFunction |
| 修訂 | CreateWebFunctionRevision, GetWebFunctionRevision,
ListWebFunctionRevisions, DeleteWebFunctionRevision |
| 端點 | CreateWebFunctionEndpoint, GetWebFunctionEndpoint,
ListWebFunctionEndpoints, UpdateWebFunctionEndpoint,
DeleteWebFunctionEndpoint |
| 帳戶設定 | GetWebAccountSettings |
| 資源政策 | PutResourcePolicy, GetResourcePolicy,
DeleteResourcePolicy |
| Tags (標籤) | TagResource, UntagResource,
ListTags |
Web 函數叫用是一種資料平面操作。CloudTrail 只會將其記錄為資料事件,如中所述CloudTrail 中的 Web 函數資料事件。
相關資源
如需詳細資訊,請參閱下列資源: