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 AWS Lambda avec AWS CloudTrail
AWS Lambda est intégré avec AWS CloudTrail, un service qui fournit un registre des actions prises par un utilisateur, un rôle ou un Service AWS. CloudTrail capture les appels d’API pour Lambda en tant qu’événements. Les appels capturés incluent des appels de la console Lambda et les appels de code vers les opérations d’API Lambda. À l’aide des informations collectées par CloudTrail, vous pouvez déterminer la demande qui a été faite à Lambda, l’adresse IP à partir de laquelle la demande a été faite, le moment où elle a été faite, ainsi que des détails supplémentaires.
Chaque événement ou entrée de journal contient des informations sur la personne ayant initié la demande. Les informations relatives à l’identité permettent de déterminer :
-
Si la demande a été effectuée avec des informations d’identification d’utilisateur root ou d’utilisateur root.
-
Si la demande a été faite au nom d’un utilisateur IAM Identity Center.
-
Si la demande a été effectuée avec les informations d’identification de sécurité temporaires d’un rôle ou d’un utilisateur fédéré.
-
Si la requête a été effectuée par un autre Service AWS.
CloudTrail est actif dans votre Compte AWS lorsque vous créez le compte et vous avez automatiquement accès à l’historique des événements CloudTrail. L’Historique des événements CloudTrail fournit un enregistrement consultable, interrogeable, téléchargeable et immuable des 90 derniers jours des événements de gestion enregistrés d’une Région AWS. Pour plus d’informations, consultez Utilisation de l’historique des événements CloudTrail dans le Guide de l’utilisateur AWS CloudTrail. La consultation de l’Historique des événements ne génère aucuns frais CloudTrail.
Pour un enregistrement continu des événements dans votre Compte AWS les 90 derniers jours, créez un suivi ou un stockage des données d’événement CloudTrail Lake.
- Journaux de suivi CloudTrail
-
Un journal de suivi permet à CloudTrail de livrer des fichiers journaux à compartiment Amazon S3. Tous les suivis créés à l’aide de AWS Management Console sont multirégionaux. Vous pouvez créer un suivi d’une seule région ou de plusieurs régions à l’aide de l’AWS CLI. Il est recommandé de créer un suivi de plusieurs régions car vous capturez l’activité dans toutes les Régions AWS de votre compte. Si vous créez un suivi d’une seule région, vous ne pouvez visualiser que les événements journalisés dans la Région AWS du suivi. Pour plus d’informations sur les suivis, consultez Création d’un suivi pour votre Compte AWS et Création d’un suivi pour une organisation dans le Guide de l’utilisateur AWS CloudTrail.
Vous pouvez diffuser une copie de vos événements de gestion en cours à votre compartiment Amazon S3 sans frais depuis CloudTrail en créant un suivi. Toutefois, des frais de stockage Amazon S3 sont facturés. Pour en savoir plus sur la tarification CloudTrail, consultez Tarification d’AWS CloudTrail
. Pour obtenir des informations sur la tarification Amazon S3, consultez Tarification Amazon S3 . - Magasins de données d’événement CloudTrail Lake
-
CloudTrail Lake vous permet d’exécuter des requêtes SQL sur vos événements. CloudTrail Lake convertit les événements existants au format JSON basé sur des lignes au format Apache ORC
. ORC est un format de stockage en colonnes qui est optimisé pour une récupération rapide des données. Les événements sont agrégés dans des magasins de données d’événement. Ceux-ci constituent des collections immuables d’événements basées sur des critères que vous sélectionnez en appliquant des sélecteurs d’événements avancés. Les sélecteurs que vous appliquez à un magasin de données d’événement contrôlent les événements qui persistent et que vous pouvez interroger. Pour plus d’informations sur CloudTrail Lake, consultez Utilisation d’AWS CloudTrail Lake dans le Guide de l’utilisateur AWS CloudTrail. Les stockages des données d’événement et les requêtes CloudTrail Lake entraînent des coûts. Lorsque vous créez un magasin de données d’événement, vous choisissez l’option de tarification que vous voulez utiliser pour le magasin de données d’événement. L’option de tarification détermine le coût d’ingestion et de stockage des événements, ainsi que les périodes de conservation par défaut et maximale pour le magasin de données d’événement. Pour en savoir plus sur la tarification CloudTrail, consultez Tarification d’AWS CloudTrail
.
Événements de données Lambda dans CloudTrail
Les événements de données fournissent des informations sur les opérations de ressources effectuées sur ou dans une ressource (par exemple, lecture ou écriture de données dans un objet Amazon S3). Ils sont également connus sous le nom opérations de plans de données. Les événements de données sont souvent des activités dont le volume est élevé. Par défaut, CloudTrail ne journalise pas la plupart des événements de données, et l’Historique des événements CloudTrail ne les enregistre pas.
L’un des événements de données CloudTrail qui est journalisé par défaut pour les services pris en charge est LambdaESMDisabled
. Pour en savoir plus sur l’utilisation de cet événement afin de résoudre les problèmes liés aux mappages des sources d’événements Lambda, consultez Utilisation de CloudTrail pour dépanner les sources d’événement Lambda désactivées.
Des frais supplémentaires s’appliquent pour les événements de données. Pour en savoir plus sur la tarification CloudTrail, consultez Tarification d’AWS CloudTrail
Vous pouvez journaliser les événements de données pour le type de ressources AWS::Lambda::Function
en utilisant la console CloudTrail, l’AWS CLI ou les opérations d’API CloudTrail. Pour plus d’informations sur la façon de journaliser les événements de données, consultez Journalisation des événements de données avec la AWS Management Console et Journalisation des événements de données avec l’AWS Command Line Interface dans le Guide de l’utilisateur AWS CloudTrail.
Le tableau suivant répertorie les types de ressources Lambda pour lesquels vous pouvez journaliser les événements de données. La colonne Type d’événement de données (console) indique la valeur à choisir dans la liste Type d’événement de données de la console CloudTrail. La colonne resources.type value indique la valeur de resources.type
, que vous devez spécifier lors de la configuration des sélecteurs d’événements avancés à l’aide de l’AWS CLI ou des API CloudTrail. La colonne API de données journalisées dans CloudTrail indique les appels d’API journalisés dans CloudTrail pour le type de ressource.
Type d’événement de données (console) | valeur resources.type | API de données journalisées dans CloudTrail |
---|---|---|
Lambda |
AWS::Lambda::Function
|
Vous pouvez configurer des sélecteurs d’événements avancés pour filtrer les champs eventName
, readOnly
et resources.ARN
afin de ne journaliser que les événements importants pour vous. L’exemple suivant est la vue JSON d’une configuration d’événements de données qui journalise les événements pour une fonction spécifique uniquement. Pour plus d’informations sur ces champs, consultez AdvancedFieldSelector dans la Référence de l’API AWS CloudTrail.
[ { "name": "function-invokes", "fieldSelectors": [ { "field": "eventCategory", "equals": [ "Data" ] }, { "field": "resources.type", "equals": [ "AWS::Lambda::Function" ] }, { "field": "resources.ARN", "equals": [ "
arn:aws:lambda:us-east-1:111122223333:function:hello-world
" ] } ] } ]
Événements de gestion Lambda dans CloudTrail
Les événements de gestion fournissent des informations sur les opérations de gestion exécutées sur les ressources de votre Compte AWS. Ils sont également connus sous le nom opérations de plan de contrôle. Par défaut, CloudTrail journalise les événements de gestion.
Lambda prend en charge la journalisation des actions suivantes en tant qu’événements de gestion dans les fichiers journaux CloudTrail.
Note
Dans le fichier journal CloudTrail, eventName
peut inclure des informations de date et de version, mais il s’agit toujours de la même action d’API publique. Par exemple, l’action GetFunction
apparaît sous la forme de GetFunction20150331v2
. La liste suivante indique les cas où le nom de l’événement diffère du nom de l’action d’API.
-
AddPermission (nom de l’événement :
AddPermission20150331v2
) -
CreateAlias (nom de l’événement :
CreateAlias20150331
) -
CreateEventSourceMapping (nom de l’événement :
CreateEventSourceMapping20150331
) -
CreateFunction (nom de l’événement :
CreateFunction20150331
)(Les paramètres
Environment
etZipFile
ne figurent pas dans les journaux CloudTrail pourCreateFunction
.) -
DeleteAlias (nom de l’événement :
DeleteAlias20150331
) -
DeleteEventSourceMapping (nom de l’événement :
DeleteEventSourceMapping20150331
) -
DeleteFunction (nom de l’événement :
DeleteFunction20150331
) -
DeleteFunctionConcurrency (nom de l’événement :
DeleteFunctionConcurrency20171031
) -
GetAlias (nom de l’événement :
GetAlias20150331
) -
PublishLayerVersion (nom de l’événement :
PublishLayerVersion20181031
)(Le paramètre
ZipFile
ne figure pas dans les journaux CloudTrail pourPublishLayerVersion
.) -
PublishVersion (nom de l’événement :
PublishVersion20150331
) -
PutFunctionConcurrency (nom de l’événement :
PutFunctionConcurrency20171031
) -
RemovePermission (nom de l’événement :
RemovePermission20150331v2
) -
TagResource (nom de l’événement :
TagResource20170331v2
) -
UntagResource (nom de l’événement :
UntagResource20170331v2
) -
UpdateAlias (nom de l’événement :
UpdateAlias20150331
) -
UpdateEventSourceMapping (nom de l’événement :
UpdateEventSourceMapping20150331
) -
UpdateFunctionCode (nom de l’événement :
UpdateFunctionCode20150331v2
)(Le paramètre
ZipFile
ne figure pas dans les journaux CloudTrail pourUpdateFunctionCode
.) -
UpdateFunctionConfiguration (nom de l’événement :
UpdateFunctionConfiguration20150331v2
)(Le paramètre
Environment
ne figure pas dans les journaux CloudTrail pourUpdateFunctionConfiguration
.)
Utilisation de CloudTrail pour dépanner les sources d’événement Lambda désactivées
Lorsque vous modifiez l’état d’un mappage de sources d’événements à l’aide de l’action d’API UpdateEventSourceMapping, l’appel d’API est journalisé en tant qu’événement de gestion dans CloudTrail. Les mappages de sources d’événements peuvent également passer directement à l’état Disabled
en raison d’erreurs.
Pour les services suivants, Lambda publie l’événement de données LambdaESMDisabled
sur CloudTrail lorsque la source de l’événement passe à l’état Disabled :
-
Amazon Simple Queue Service (Amazon SQS)
-
Amazon DynamoDB
-
Amazon Kinesis
Lambda ne prend en charge cet événement pour aucun autre type de mappage de sources d’événements.
Pour recevoir des alertes lorsque les mappages des sources d’événements pour les services pris en charge passent à l’état Disabled
, configurez une alarme dans Amazon CloudWatch à l’aide de l’événement CloudTrail LambdaESMDisabled
. Pour plus d’informations sur la configuration d’une alarme CloudWatch, consultez la rubrique Creating CloudWatch alarms for CloudTrail events: examples.
L’entité serviceEventDetails
figurant dans le message d’événement LambdaESMDisabled
contient l’un des codes d’erreur suivants.
RESOURCE_NOT_FOUND
-
La ressource spécifiée dans la demande n’existe pas.
FUNCTION_NOT_FOUND
-
La fonction attachée à la source d’événement n’existe pas.
REGION_NAME_NOT_VALID
-
Un nom de région fourni à la source ou à la fonction d’événement n’est pas valide.
AUTHORIZATION_ERROR
-
Les autorisations n’ont pas été définies ou sont mal configurées.
FUNCTION_IN_FAILED_STATE
-
Le code de fonction ne compile pas, a rencontré une exception irrécupérable ou un mauvais déploiement s’est produit.
Exemples d’événements Lambda
Une entrée de journal représente une demande individuelle à partir d’une source quelconque et comprend des informations sur l’opération d’API demandée, y compris la date et l’heure de l’opération, les paramètres de la demande, etc. Les fichiers journaux CloudTrail ne constituent pas une série ordonnée retraçant les appels d’API publics. Les événements ne suivent aucun ordre précis.
L’exemple suivant montre les entrées de journal CloudTrail pour les actions GetFunction
et DeleteFunction
.
Note
eventName
peut inclure des informations de date et de version, comme "GetFunction20150331"
, mais il s’agit toujours de la même API publique.
{ "Records": [ { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/myUserName", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "myUserName" }, "eventTime": "2015-03-18T19:03:36Z", "eventSource": "lambda.amazonaws.com", "eventName": "GetFunction", "awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "Python-httplib2/0.8 (gzip)", "errorCode": "AccessDenied", "errorMessage": "User: arn:aws:iam::111122223333:user/myUserName is not authorized to perform: lambda:GetFunction on resource: arn:aws:lambda:us-west-2:111122223333:function:other-acct-function", "requestParameters": null, "responseElements": null, "requestID": "7aebcd0f-cda1-11e4-aaa2-e356da31e4ff", "eventID": "e92a3e85-8ecd-4d23-8074-843aabfe89bf", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }, { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/myUserName", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "myUserName" }, "eventTime": "2015-03-18T19:04:42Z", "eventSource": "lambda.amazonaws.com", "eventName": "DeleteFunction20150331", "awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "Python-httplib2/0.8 (gzip)", "requestParameters": { "functionName": "basic-node-task" }, "responseElements": null, "requestID": "a2198ecc-cda1-11e4-aaa2-e356da31e4ff", "eventID": "20b84ce5-730f-482e-b2b2-e8fcc87ceb22", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ] }
Pour plus d’informations sur le contenu des enregistrements CloudTrail, consultez Contenu des enregistrements CloudTrail dans le Guide de l’utilisateur AWS CloudTrail.