Je souhaite obtenir des informations sur l'utilisateur qui a invoqué ma fonction AWS Lambda, telles que ses détails UserIdentity, SourceIPAddress ou UserAgent.
Résolution
Pour consulter les informations sur l'utilisateur qui a appelé votre fonction Lambda, vous devez activer la journalisation des événements de données dans AWS CloudTrail. Par défaut, CloudTrail ne journalise pas les appels d'API Invoquer et l’Historique des événements CloudTrail ne les enregistre pas.
Pour plus d'informations sur la tarification des événements de données dans CloudTrail, consultez la section Tarification d'AWS CloudTrail.
Pour activer la journalisation des événements de données, créez une nouvelle piste ou mettez à jour une piste existante, puis configurez le paramètre Événements de données. Sous Type d'événement de données, pour Source, sélectionnez Lambda et pour Modèle de sélecteur de journaux, sélectionnez Journaliser tous les événements.
Les exemples de journaux suivants présentent les détails d'un appel d’API Invoquer :
{
"eventVersion": "1.06",
"userIdentity": {
"type": "IAMUser",
"principalId": "AIDAIOR74VCJ2M3NB8U4M",
"arn": "arn:aws:iam::999999999999:user/kyle",
"accountId": "999999999999",
"accessKeyId": "AK2IU7DKE7U2KOI8CCBP",
"userName": "kyle"
},
"eventTime": "2017-11-29T08:47:45Z",
"eventSource": "lambda.amazonaws.com",
"eventName": "Invoke",
"awsRegion": "us-west-2",
"sourceIPAddress": "192.168.0.1",
"userAgent": "aws-cli/1.11.129 Python/2.7.8 Linux/3.1.56-0.6.839hdh3.x86_64 botocore/1.5.92",
"requestParameters": {
"invocationType": "RequestResponse",
"functionName": "arn:aws:lambda:us-west-2:999999999999:function:BlogFunction:prod",
"clientContext": "ew0KICAiY29udGV4dGtleSIgOiAiY29udGV4dHZhbHVlIg0KfQ==",
"qualifier": "prod"
},
"responseElements": null,
"additionalEventData": {
"functionVersion": "arn:aws:lambda:us-west-2:999999999999:function:BlogFunction:4"
},
"requestID": "eaccb900-8f45-11e7-b60d-179cdf501g92",
"eventID": "0e205f1d-3929-4803-b887-0d2aca122148",
"readOnly": false,
"resources": [{
"accountId": "999999999999",
"type": "AWS::Lambda::Function",
"ARN": "arn:aws:lambda:us-west-2:999999999999:function:BlogFunction"
}],
"eventType": "AwsApiCall",
"managementEvent": false,
"recipientAccountId": "999999999999",
"sharedEventID": "6159da59-ad2f-4e04-9669-cf0a6b6b4827"
}
Pour trouver des informations sur l'utilisateur qui a invoqué la fonction Lambda dans l'exemple précédent, consultez les champs suivants :
- Le champ userIdentity fournit des informations sur l'utilisateur qui a effectué la requête.
- Le champ sourceIPAddress indique l'adresse IP à laquelle l'utilisateur a présenté la requête.
Remarque : Ce champ autorise les adresses IPv4 et IPv6.
- Le champ userAgent indique l'agent que l'utilisateur a utilisé pour présenter la requête.
Informations connexes
Gagner en visibilité sur l'exécution de vos fonctions AWS Lambda grâce à AWS CloudTrail
Journalisation des appels d'API AWS Lambda à l'aide d'AWS CloudTrail
Comprendre le schéma d’événements CloudTrail Lake
Contenu de l'enregistrement CloudTrail