Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Journalisation des appels d'API de fonction Web à l'aide de AWS CloudTrail
Avec AWS CloudTrail, vous pouvez suivre les actions entreprises par un utilisateur, un rôle ou Service AWS dans les fonctions AWS Lambda Web. CloudTrail fournit un enregistrement de ces actions. CloudTrail capture les invocations de fonctions Web sous forme d'événements de données. Vous pouvez utiliser ces informations pour déterminer qui a invoqué une fonction Web, quand et d'où, ce qui facilite l'analyse de sécurité et l'audit opérationnel.
Événements de données de fonction Web dans CloudTrail
Les événements de données fournissent des informations sur les opérations effectuées sur une ressource. Par exemple, l'appel d'un point de terminaison de fonction Web est un événement de données. Ces opérations sont également connues sous le nom d'opérations de plan de données, et elles portent souvent sur un volume élevé. Par défaut, CloudTrail n'enregistre pas les événements liés aux données et l'historique des CloudTrail événements ne les enregistre pas.
Des frais supplémentaires sont facturés pour les événements de données. Pour en savoir plus, consultez Tarification de CloudTrail
Vous pouvez enregistrer les événements de données pour le type de AWS::Lambda::WebFunction ressource à l'aide de la CloudTrail console ou AWS CLI des opérations de CloudTrail l'API. CloudTrail enregistre chaque invocation dans la région Région AWS qui a répondu à la demande et awsRegion identifie cette région. Contrairement aux journaux et aux métriques, les événements d'invocation ne sont pas centralisés dans la région d'origine. Pour un point de PerRegion terminaison MultiRegion ou un point de terminaison, utilisez un magasin de données de suivi ou d'événement multirégional afin que les appels soient enregistrés dans chaque région desservie par le point de terminaison.
Le tableau suivant indique le type d'événement de données pour les fonctions Web.
| Type d’événement de données (console) | valeur resources.type | API de données connectées à CloudTrail |
|---|---|---|
| Fonction Web Lambda | AWS::Lambda::WebFunction |
InvokeWebFunctionEndpoint |
CloudTrail enregistre les identificateurs clés suivants pour une invocation de fonction Web :
| Identifiant | Value |
|---|---|
eventSource | lambda.amazonaws.com |
eventName | InvokeWebFunctionEndpoint. Il s'agit de la valeur sur laquelle filtrer. |
| Action IAM | lambda:InvokeWebFunctionEndpoint |
readOnly | false, car un appel exécute votre code de fonction. |
resources.type | AWS::Lambda::WebFunction |
resources.ARN | L'ARN de la fonction, et non l'ARN du point de terminaison. Les sélecteurs de parcours fonctionnent donc au niveau de la fonction. |
Le sélecteur d'événements avancé suivant enregistre les appels pour une seule fonction 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"] } ] } ]
Pour activer les événements de données sur un parcours, procédez comme suit.
Pour activer et vérifier les événements relatifs aux données de la fonction Web (AWS CLI)
-
Créez ou choisissez le parcours qui enregistrera les événements liés aux données. Pour obtenir des instructions, consultez la section Journalisation des événements liés aux données dans le guide de AWS CloudTrail l'utilisateur.
-
Enregistrez le sélecteur d'événements avancé suivant sous
web-function-data-events.json. Il enregistre les appels pour une fonction Web. Pour enregistrer les appels pour chaque fonction Web du compte, supprimez le sélecteur deresources.ARNchamps.[ { "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" ] } ] } ] -
Appliquez le sélecteur à la piste :
aws cloudtrail put-event-selectors \ --trail-namemy-trail\ --advanced-event-selectors file://web-function-data-events.jsonImportant
put-event-selectorsremplace les sélecteurs d'événements existants du sentier. Si le parcours enregistre déjà d'autres événements, incluez leurs sélecteurs dans le même fichier. -
Appelez le point de terminaison avec une demande de test.
-
Recherchez la destination du sentier pour
eventName = InvokeWebFunctionEndpoint. Vérifiez l'ARN de la fonction, l'heure de l'événement, l'ID de la demande, les informations sur l'appelant disponibles pour le chemin d'authentification et les éventuels champs d'erreur conditionnelle. Si le sélecteur fonctionne, la requête renvoie unInvokeWebFunctionEndpointévénement pour votre demande de test, comme dans l'exemple présenté dansExemple : appel réussi (appelant non authentifié).
Pour enregistrer des événements de données dans un magasin de données d'événements CloudTrail Lake à la place, ajoutez les mêmes sélecteurs de champs au magasin de données d'événements. Pour plus d’informations, consultez le Guide de l’utilisateur AWS CloudTrail .
Champs d'un InvokeWebFunctionEndpoint événement
Le tableau suivant décrit les champs d'un InvokeWebFunctionEndpoint événement.
| Champ | Remarques |
|---|---|
eventVersion |
Version du format de l'événement . |
eventSource |
Toujours lambda.amazonaws.com. |
eventName |
Toujours InvokeWebFunctionEndpoint. |
eventCategory |
Toujours Data. |
eventType |
Le type d'événement, par exempleAwsApiCall. |
readOnly |
Toujoursfalse, car un appel exécute votre code de fonction. |
managementEvent |
Toujours false. |
eventTime |
Date et heure, en UTC, auxquelles Lambda a enregistré l'événement. Pour un appel réussi, Lambda enregistre l'événement lorsque votre fonction commence sa réponse, eventTime ce qui peut être postérieur à l'heure d'arrivée de la demande. |
sourceIPAddress |
Adresse IP à partir de laquelle la demande a été faite. |
userAgent |
L'agent utilisé par l'appelant pour effectuer la demande. Présent lorsque l'appelant envoie un User-Agent en-tête. |
requestParameters |
Contient endpointArn l'ARN du point de terminaison invoqué. La charge utile de la demande n'est pas enregistrée. |
responseElements |
Toujours null. |
resources |
Contient une entrée avec le accountIdtype, et ARN de la fonction. |
additionalEventData |
Contient functionRevisionArn l'ARN de la révision qui a répondu à la demande. Ce champ est présent sur tous les événements, y compris les refus. |
tlsDetails |
Version TLS, suite de chiffrement et en-tête hôte de la demande. |
userIdentity |
L'identité de l'appelant. Pour plus de détails, consultez la liste suivante. |
sharedEventID |
Présent lorsque CloudTrail le même événement est diffusé à plus d'une personne Compte AWS. |
errorCode, errorMessage |
Présent uniquement en cas d'erreur. |
requestID, eventID,
recipientAccountId, awsRegion |
CloudTrail Champs standard qui identifient la demande, l'événement, le destinataire Compte AWS et le Région AWS. |
Les événements Web Function utilisent les formes d'ARN suivantes :
-
Fonction (
resources[].ARN) —arn:aws:lambda:us-east-1:123456789012:web-function/my-fn -
Point de terminaison (
requestParameters.endpointArn) —arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/endpoint/my-endpoint -
Révision (
additionalEventData.functionRevisionArn) —arn:aws:lambda:us-east-1:123456789012:web-function/my-fn/revision/rev-a1b2c
Le userIdentity champ dépend de la manière dont l'appelant s'est authentifié :
-
Les invocations non authentifiées sont enregistrées avec le type.
userIdentityUnknown -
IAM-authenticated les appelants sont enregistrés avec leur propre directeur. Par exemple, un appelant utilisant des informations d'identification temporaires apparaît avec les
AssumedRolecaractères typearn, an et a.sessionContext -
Le champ
accessKeyIdn'est pas renseigné.
Événements d’erreur
CloudTrail enregistre également les tentatives d'invocation qui échouent une fois que l'appelant est authentifié. Le tableau suivant décrit ces événements d'erreur.
| Scénario | errorCode | errorMessage |
|---|---|---|
| Appelant non autorisé | AccessDenied |
L'utilisateur n'est pas autorisé à effectuer : lambda:InvokeWebFunctionEndpoint |
| Taux de demande, simultanéité ou limite de vCPU atteinte (point de terminaison ou compte) | ThrottlingException |
Vitesse de transfert dépassée |
| Défaut de service | ServiceException |
Erreur de service |
| Erreur d'application ou demande client non valide | Non applicable | Considéré comme un appel d'API réussi. L'invocation a atteint et exécuté la fonction. |
Une invocation réussie ne comporte aucun errorCode ouerrorMessage. Les refus d'autorisation sont enregistrés sous AccessDenied le nom de. CloudTrail n'enregistre pas les demandes qui échouent à l'authentification, telles que les demandes dont la signature est manquante, mal formée, non valide ou expirée, et n'enregistre pas les demandes rejetées par Lambda avant l'authentification, telles que les demandes adressées à un point de terminaison rateLimit dont la valeur est 0. Les défaillances de l'infrastructure d'authentification interne ne sont pas non plus enregistrées. Pour détecter un pic de demandes rejetées, lancez une alarme HTTPResponseStatusClass4XX dans l'espace de AWS/Lambda/Web noms.
Exemple : appel réussi (appelant non authentifié)
L'exemple suivant montre un appel réussi par un appelant non authentifié.
{ "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" } } ] }
Pour un IAM-authenticated appelant, le userIdentity champ contient plutôt le principal de l'appelant, par exemple tapez AssumedRole avec un arn et unsessionContext, et les champs restants restent inchangés.
Exemple : invocation refusée
Les événements d'erreur comportent errorCode eterrorMessage. L'exemple suivant montre un appel refusé.
{ "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" } } ] }
Événements de gestion dans CloudTrail
CloudTrail enregistre les événements de gestion des fonctions Web par défaut. Vous pouvez consulter les événements de gestion des 90 derniers jours dans l' CloudTrail historique des événements sans créer de trace. Pour les conserver plus longtemps, créez une banque de données sur les événements CloudTrail relatifs aux sentiers ou aux lacs. Pour plus d’informations, consultez Journalisation des événements de gestion dans le Guide de l’utilisateur AWS CloudTrail .
CloudTrail enregistre les opérations de fonction Web suivantes en tant qu'événements de gestion. Le eventName champ de chaque événement est identique au nom de l'opération.
| Ressource ou tâche | Opérations |
|---|---|
| Fonctions Web | CreateWebFunction, GetWebFunction,
ListWebFunctions, DeleteWebFunction |
| Révisions | CreateWebFunctionRevision, GetWebFunctionRevision,
ListWebFunctionRevisions, DeleteWebFunctionRevision |
| Points de terminaison | CreateWebFunctionEndpoint, GetWebFunctionEndpoint,
ListWebFunctionEndpoints, UpdateWebFunctionEndpoint,
DeleteWebFunctionEndpoint |
| Paramètres du compte | GetWebAccountSettings |
| Politiques basées sur une ressource | PutResourcePolicy, GetResourcePolicy,
DeleteResourcePolicy |
| Étiquettes | TagResource, UntagResource,
ListTags |
L'invocation d'une fonction Web est une opération de plan de données. CloudTrail l'enregistre uniquement en tant qu'événement de données, comme décrit dansÉvénements de données de fonction Web dans CloudTrail.
Ressources connexes
Pour plus d’informations, consultez les ressources suivantes :