View a markdown version of this page

Registrazione delle chiamate API Web Function utilizzando AWS CloudTrail - AWS Lambda

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Registrazione delle chiamate API Web Function utilizzando AWS CloudTrail

Con AWS CloudTrail, puoi tenere traccia delle azioni intraprese da un utente, da un ruolo o Servizio AWS in Web Functions. AWS Lambda CloudTrail fornisce una registrazione di queste azioni. CloudTrail acquisisce le chiamate di Web Function come eventi di dati. È possibile utilizzare queste informazioni per determinare chi ha richiamato una funzione Web, quando e da dove, il che aiuta con l'analisi della sicurezza e il controllo operativo.

Eventi relativi ai dati di Web Function in CloudTrail

Gli eventi relativi ai dati forniscono informazioni sulle operazioni eseguite su una risorsa. Ad esempio, l'invocazione di un endpoint Web Function è un evento relativo ai dati. Queste operazioni sono note anche come operazioni sul piano dei dati e spesso richiedono volumi elevati. Per impostazione predefinita, CloudTrail non registra gli eventi relativi ai dati e la cronologia degli CloudTrail eventi non li registra.

Per gli eventi di dati sono previsti costi aggiuntivi. Per ulteriori informazioni, consulta Prezzi di CloudTrail .

È possibile registrare gli eventi relativi ai dati per il tipo di AWS::Lambda::WebFunction risorsa utilizzando la CloudTrail AWS CLI console o le operazioni CloudTrail API. CloudTrail registra ogni chiamata nell'area Regione AWS che ha fornito la richiesta e awsRegion identifica tale regione. A differenza dei log e delle metriche, gli eventi di chiamata non sono centralizzati nella regione di origine. Per un PerRegion endpoint MultiRegion or, utilizzate un trail multiregionale o un data store di eventi in modo da registrare le chiamate in ogni regione servita dall'endpoint.

La tabella seguente mostra il tipo di evento relativo ai dati per Web Functions.

Tipo di evento di dati (console) valore resources.type API di dati registrate su CloudTrail
Funzione Web Lambda AWS::Lambda::WebFunction InvokeWebFunctionEndpoint

CloudTrail registra i seguenti identificatori chiave per una chiamata di Web Function:

IdentificatoreValore
eventSourcelambda.amazonaws.com
eventNameInvokeWebFunctionEndpoint. Questo è il valore in base al quale filtrare.
Azione IAMlambda:InvokeWebFunctionEndpoint
readOnlyfalse, perché una chiamata esegue il codice della funzione.
resources.typeAWS::Lambda::WebFunction
resources.ARNLa funzione ARN, non l'ARN dell'endpoint. I selettori Trail funzionano quindi a livello di funzione.

Il seguente selettore di eventi avanzato registra le chiamate per una sola funzione 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"] } ] } ]

Per attivare gli eventi relativi ai dati su una traccia, utilizzare la procedura seguente.

Per attivare e verificare gli eventi relativi ai dati di Web Function (AWS CLI)
  1. Crea o scegli il percorso che registrerà gli eventi relativi ai dati. Per istruzioni, consulta Registrazione degli eventi relativi ai dati nella Guida per l'AWS CloudTrail utente.

  2. Salva il seguente selettore di eventi avanzato come. web-function-data-events.json Registra le chiamate per una funzione Web. Per registrare le chiamate per ogni funzione Web nell'account, rimuovi il selettore di campo. 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" ] } ] } ]
  3. Applica il selettore alla traccia:

    aws cloudtrail put-event-selectors \ --trail-name my-trail \ --advanced-event-selectors file://web-function-data-events.json
    Importante

    put-event-selectorssostituisce i selettori di eventi esistenti del percorso. Se il percorso registra già altri eventi, includi i relativi selettori nello stesso file.

  4. Invoca l'endpoint con una richiesta di test.

  5. Interroga la destinazione del percorso per. eventName = InvokeWebFunctionEndpoint Verifica l'ARN della funzione, l'ora dell'evento, l'ID della richiesta, le informazioni sul chiamante disponibili per il percorso di autenticazione ed eventuali campi di errore condizionali. Se il selettore funziona, la query restituisce un InvokeWebFunctionEndpoint evento per la richiesta di test, simile all'esempio in. Esempio: chiamata riuscita (chiamante non autenticato)

Per registrare invece eventi relativi ai dati in un data store di eventi CloudTrail Lake, aggiungi gli stessi selettori di campo all'event data store. Per ulteriori informazioni, consulta la Guida per l’utente di AWS CloudTrail .

Campi in un evento InvokeWebFunctionEndpoint

La tabella seguente descrive i campi di un InvokeWebFunctionEndpoint evento.

Campo Note
eventVersion La versione del formato dell'evento .
eventSource Sempre lambda.amazonaws.com.
eventName Sempre InvokeWebFunctionEndpoint.
eventCategory Sempre Data.
eventType Il tipo di evento, ad esempioAwsApiCall.
readOnly Semprefalse, perché un'invocazione esegue il codice della funzione.
managementEvent Sempre false.
eventTime La data e l'ora, in UTC, in cui Lambda ha registrato l'evento. Per una chiamata riuscita, Lambda registra l'evento quando la funzione inizia la sua risposta, quindi eventTime può avvenire dopo l'arrivo della richiesta.
sourceIPAddress Indirizzo IP da cui è stata effettuata la richiesta.
userAgent L'agente utilizzato dal chiamante per effettuare la richiesta. Presente quando il chiamante invia un'User-Agentintestazione.
requestParameters ContieneendpointArn, l'ARN dell'endpoint richiamato. Il payload della richiesta non viene registrato.
responseElements Sempre null.
resources Contiene una voce con il accountIdtype, e ARN della funzione.
additionalEventData Contiene functionRevisionArn l'ARN della revisione che ha fornito la richiesta. Questo campo è presente in ogni evento, comprese le negazioni.
tlsDetails La versione TLS, la suite di crittografia e l'intestazione host della richiesta.
userIdentity L'identità del chiamante. Per i dettagli, consulta l'elenco seguente.
sharedEventID Presente quando CloudTrail consegna lo stesso evento a più di uno Account AWS.
errorCode, errorMessage Presente solo in caso di errore.
requestID, eventID, recipientAccountId, awsRegion CloudTrail Campi standard che identificano la richiesta, l'evento, il destinatario Account AWS e il Regione AWS.

Gli eventi Web Function utilizzano le seguenti forme ARN:

  • Funzione (resources[].ARN) — arn:aws:lambda:us-east-1:123456789012:web-function/my-fn

  • Punto finale (requestParameters.endpointArn) — arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/endpoint/my-endpoint

  • Revisione () additionalEventData.functionRevisionArn — arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/revision/rev-a1b2c

Il userIdentity campo dipende dal modo in cui il chiamante si è autenticato:

  • Le chiamate non autenticate vengono registrate con type. userIdentity Unknown

  • IAM-authenticated i chiamanti vengono registrati con il proprio principale. Ad esempio, un chiamante che utilizza credenziali temporanee viene visualizzato con typeAssumedRole, an arn e a. sessionContext

  • Il campo accessKeyId non è popolato.

Eventi di errore

CloudTrail registra anche i tentativi di chiamata che falliscono dopo l'autenticazione del chiamante. La tabella seguente descrive questi eventi di errore.

Scenario errorCode errorMessage
Chiamante non autorizzato AccessDenied L'utente non è autorizzato a eseguire: lambda:InvokeWebFunctionEndpoint
Velocità di richiesta, concorrenza o limite di vCPU raggiunto (endpoint o account) ThrottlingException Velocità superata
Guasto del servizio ServiceException Errore di servizio
Errore dell'applicazione o richiesta client non valida Non applicabile Considerata come una chiamata API riuscita. L'invocazione ha raggiunto ed eseguito la funzione.

Una chiamata riuscita non ha un or. errorCode errorMessage I dinieghi di autorizzazione vengono registrati come. AccessDenied CloudTrail non registra le richieste che falliscono l'autenticazione, ad esempio le richieste con una firma mancante, non valida, non valida o scaduta, e non registra le richieste che Lambda rifiuta prima dell'autenticazione, come le richieste a un endpoint il cui valore è 0. rateLimit Inoltre, gli errori dell'infrastruttura di autenticazione interna non vengono registrati. Per rilevare un picco di richieste rifiutate, attiva un allarme HTTPResponseStatusClass4XX nel namespace. AWS/Lambda/Web

Esempio: chiamata riuscita (chiamante non autenticato)

L'esempio seguente mostra una chiamata riuscita da parte di un chiamante non autenticato.

{ "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" } } ] }

Per un IAM-authenticated chiamante, il userIdentity campo riporta invece il principale del chiamante, ad esempio digita AssumedRole con an arn e a, e i campi rimanenti rimangono sessionContext invariati.

Esempio: chiamata negata

Gli eventi di errore portano errorCode e. errorMessage L'esempio seguente mostra una chiamata negata.

{ "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" } } ] }

Eventi di gestione in CloudTrail

CloudTrail registra gli eventi di gestione delle funzioni Web per impostazione predefinita. È possibile visualizzare gli ultimi 90 giorni di eventi di gestione nella cronologia degli CloudTrail eventi senza creare una traccia. Per conservarli più a lungo, crea un trail o un archivio dati sugli eventi CloudTrail Lake. Per ulteriori informazioni, consulta Registrazione degli eventi di gestione nella Guida per l'utente di AWS CloudTrail .

CloudTrail registra le seguenti operazioni di Web Function come eventi di gestione. Il eventName campo di ogni evento è lo stesso del nome dell'operazione.

Risorsa o attività Operazioni
Funzioni Web CreateWebFunction, GetWebFunction, ListWebFunctions, DeleteWebFunction
Revisioni CreateWebFunctionRevision, GetWebFunctionRevision, ListWebFunctionRevisions, DeleteWebFunctionRevision
Endpoints CreateWebFunctionEndpoint, GetWebFunctionEndpoint, ListWebFunctionEndpoints, UpdateWebFunctionEndpoint, DeleteWebFunctionEndpoint
Impostazioni dell’account GetWebAccountSettings
Policy delle risorse PutResourcePolicy, GetResourcePolicy, DeleteResourcePolicy
Tag TagResource, UntagResource, ListTags

L'invocazione di Web Function è un'operazione sul piano dati. CloudTrail la registra solo come evento di dati, come descritto in. Eventi relativi ai dati di Web Function in CloudTrail

Per maggiori informazioni, consulta le seguenti risorse: