Comment utiliser AWS CloudTrail pour suivre les appels d'API vers mes instances Amazon EC2 ?

Dernière mise à jour : 20/07/2021

Je souhaite suivre les appels d'API qui exécutent, arrêtent, démarrent et résilient mes instances Amazon Elastic Compute Cloud (Amazon EC2). Comment puis-je rechercher des appels d'API vers mes instances Amazon EC2 à l'aide d'AWS CloudTrail ?

Brève description

AWS CloudTrail vous permet d'identifier et de suivre quatre types d'appels d'API (types d'événements) effectués sur votre compte AWS :

Pour passer en revue ces types d'appels d'API une fois qu'ils ont été effectués sur votre compte, vous pouvez utiliser l'une des méthodes suivantes.

Remarque : Vous pouvez afficher l'historique des événements de votre compte jusqu'aux 90 derniers jours.

Résolution

Pour suivre les appels d'API en utilisant l'historique des événements CloudTrail

1.    Ouvrez la console CloudTrail.

2.    Choisissez Event history (Historique des événements).

3.    Pour Filtrer, sélectionnez Nom de l'événement dans la liste déroulante.

4.    Pour Saisir le nom de l'événement, saisissez le type d'événement que vous souhaitez rechercher. Sélectionnez ensuite le type d'événement.

5.    Pour la Plage horaire, saisissez la plage horaire souhaitée pour laquelle vous souhaitez suivre le type d'événement.

6.    Sélectionnez Appliquer.

Pour plus d'informations, consulter la section Affichage des événements avec l'historique des événements CloudTrail et Affichage des événements CloudTrail dans la console CloudTrail.

Pour suivre les appels d'API à l'aide des requêtes Amazon Athena

Suivez la procédure dans la section Comment créer automatiquement des tables dans Amazon Athena pour effectuer des recherches à l'aide des journaux AWS CloudTrail ?

Voici des exemples de requêtes pour l'appel d'API RunInstances. Vous pouvez utiliser des requêtes similaires pour n'importe quel type d'événement pris en charge.

Remarque : Remplacez cloudtrail-logs par le nom de votre table Athena avant d'exécuter l'un des exemples de requêtes suivants.

Exemple de requête pour renvoyer toutes les informations d'événement disponibles pour l'appel d'API RunInstances

SELECT *
FROM cloudtrail-logs
WHERE eventName = 'RunInstances'

Exemple de requête pour renvoyer des informations d'événement filtrées pour l'appel d'API RunInstances

SELECT userIdentity.username, eventTime, eventName
FROM cloudtrail-logs
WHERE eventName = 'RunInstances'

Exemple de requête pour renvoyer des informations d'événement pour les API qui se terminent par la chaîne « Instances » d'une date à la date actuelle

Remarque : Remplacez « 2021-07-01T 00:00:01Z » par la date à laquelle vous souhaitez renvoyer le formulaire des informations d'événement.

SELECT userIdentity.username, eventTime, eventName
FROM cloudtrail-logs
WHERE (eventName LIKE '%Instances') AND eventTime > '2021-07-01T00:00:01Z'

Pour suivre les appels d'API à l'aide des journaux Amazon CloudWatch Logs archivés dans Amazon Simple Notification Service (Amazon S3)

Remarque : Pour enregistrer des événements du journal dans un compartiment Amazon S3, vous devez d'abord créer un journal d'activité CloudWatch.

1.    Accédez à vos fichiers journaux CloudTrail en suivant les instructions de la section Recherche de vos fichiers journaux CloudTrail.

2.    Téléchargez vos fichiers journaux en suivant les instructions de la section Téléchargement de vos fichiers journaux CloudTrail.

3.    Recherchez dans les journaux les types d'événements que vous souhaitez suivre à l'aide de jq ou d'un autre processeur de ligne de commande JSON.

Exemple de procédure jq pour la recherche des journaux CloudWatch téléchargés depuis Amazon S3 pour des types d'événements précis

1.    Ouvrez un terminal Bash. Ensuite, créez le répertoire suivant pour stocker les fichiers journaux :

$ mkdir cloudtrail-logs

4.    Parcourez le nouveau répertoire. Téléchargez ensuite les journaux CloudTrail en exécutant la commande suivante :

Remarque : Remplacez l'exemple my_cloudtrail_bucket par votre compartiment Amazon S3.

$ cd cloudtrail-logs

$ aws s3 cp s3://my_cloudtrail_bucket/AWSLogs/012345678901/CloudTrail/eu-west-1/2019/08/07 ./ --recursive

5.    Décompressez les fichiers journaux en exécutant la commande gzip suivante :

Remarque : Remplacez * par le nom de fichier que vous souhaitez décompresser.

$ gzip -d *

6.    Exécutez une requête jq pour les types d'événements que vous souhaitez rechercher.

Exemple de requête jq pour renvoyer toutes les informations d'événement disponibles pour l'appel d'API RunInstances

cat * | jq '.Records[] | select(.eventName=="RunInstances")'

Exemple de requête jq pour renvoyer toutes les informations d'événement disponibles pour les appels d'API StopInstances et TerminateInstances

cat * | jq '.Records[] | select(.eventName=="StopInstances" or .eventName=="TerminateInstances" )'