Comment puis-je répertorier l'historique des attachements ou des détachements d'un volume Amazon EBS spécifique à l'aide des commandes de l'interface AWS CLI ?

Lecture de 4 minute(s)
0

Je souhaite utiliser l'interface de la ligne de commande AWS (AWS CLI) pour répertorier l'historique des attachements ou des détachements d'un volume Amazon Elastic Block Store (Amazon EBS).

Brève description

Les ressources Amazon Elastic Compute Cloud (Amazon EC2) et Amazon EBS ne conservent pas l'historique des attachements ou des détachements. Pour obtenir un historique des attachements ou des détachements, vous devez utiliser AWS CloudTrail. CloudTrail est un service qui enregistre les appels d'API AWS et les événements relatifs aux comptes AWS. Vous pouvez utiliser l'API AWS CloudTrail via l'interface de la ligne de commande AWS pour obtenir les journaux relatifs aux attachements et aux détachements.

Les volumes Amazon EBS attachés et détachés à l'aide des appels d'API RunInstances et TerminateInstances ne possèdent pas d'événements CloudTrail individuels. Ces événements n'apparaissent pas dans la sortie de l'API CloudTrail lookup-events.

Résolution

Remarque : si des erreurs surviennent lors de l'exécution des commandes AWS CLI, vérifiez que vous utilisez la version la plus récente de l'interface.

Exécutez l'API CloudTrail lookup-events. Cette commande utilise le processeur JSON de l'AWS CLI, JMESpath, pour rechercher les événements de type Attach et Detach.

Vous pouvez utiliser l'une des méthodes suivantes pour obtenir les données :

  • Impression d’un horodatage Unix Epoch
  • Impression d’un horodatage lisible par l’utilisateur dans le fuseau horaire UTC

Impression d’un horodatage Unix Epoch

1. Exécutez la commande suivante :

$ aws cloudtrail lookup-events \--lookup-attributes AttributeKey=ResourceName,AttributeValue=VOLUME_ID \
--max-results 3 \
--region REGION_ID \
--query 'Events[?EventName == `DetachVolume` || EventName == `AttachVolume`].{EventTime:EventTime,EventName:EventName,InstanceID:(Resources[1].ResourceName)}'

Remarque : vous devez remplacer VOLUME_ID par l’identifiant de votre volume Amazon EBS et REGION_ID par votre région AWS. Utilisez la variable max-results pour définir le nombre d'événements de volume Amazon EBS à renvoyer. Le nombre maximum est fixé à 50 événements. Il s’agit également du nombre de résultats par défaut.

2. CloudTrail affiche les horodatages au format Unix Epoch. Pour les convertir au format UTC, appliquez l'une des méthodes suivantes :

macOS

Supprimez le séparateur décimal de l'horodatage, puis exécutez la commande suivante :

$ date -r 1571065747 -uMon Oct 14 15:09:07 UTC 2019

Linux

Exécutez la commande suivante :

$ date -d @1571065747.0 -uMon Oct 14 15:09:07 UTC 2019

Windows

Utilisez un convertisseur. Pour choisir un convertisseur, consultez les outils de conversion d'horodatage Epoch et Unix sur le site Web d'EpochConverter.

Impression d’un horodatage lisible par l’utilisateur dans le fuseau horaire UTC

Remarque : cette méthode utilise l'utilitaire sed et le processeur jq. Veillez à utiliser jq uniquement pour Linux.

L'utilitaire sed permet de convertir la valeur de l'événement CloudTrail en format compatible avec JSON. L'utilitaire sed est déjà installé sur la plupart des distributions Linux. Dans le cas contraire, vous pouvez le télécharger à partir du site Web du système d'exploitation GNU.

Le processeur jq permet de rechercher et de renvoyer les valeurs pour EventName, InstanceID et EventTime. S'il n'est pas installé, vous pouvez télécharger le processeur à partir du site Web de jq. 

Exécutez la commande suivante :

$ aws cloudtrail lookup-events \--lookup-attributes AttributeKey=ResourceName,AttributeValue=VOLUME_ID \
--max-results 3 \
--region REGION_ID \
--query 'Events[?EventName == `DetachVolume` || EventName == `AttachVolume`].CloudTrailEvent' | \sed 's/\\//g' | sed 's/"}"/"}/g' |
sed 's/"{"/{"/g' | \
jq '.[] | {EventName:.eventName, InstanceID:.requestParameters.instanceId, EventTime:.eventTime}'

Remarque : vous devez remplacer VOLUME_ID par l’identifiant de votre volume Amazon EBS et REGION_ID par votre région AWS. Utilisez la variable max-results pour définir le nombre d'événements de volume Amazon EBS à renvoyer. Le nombre maximum est fixé à 50 événements. Il s’agit également du nombre de résultats par défaut.

Exemple de sortie :

{  "EventName": "AttachVolume",
  "InstanceID": "i-00a49ef5dd45af31b",
  "Time": "2019-10-02T15:36:18Z"
}
{
  "EventName": "DetachVolume",
  "InstanceID": "i-0554d4452aa4cf91b",
  "Time": "2019-10-02T14:26:04Z"
}
{
  "EventName": "AttachVolume",
  "InstanceID": "i-0554d4452aa4cf91b",
  "Time": "2019-10-02T14:25:42Z"
}

Remarque : la durée de l'historique de recherche par défaut de CloudTrail est de 90 jours. Les événements de plus de 90 jours n'apparaitront donc pas dans le résultat. Pour conserver vos journaux d'événements au-delà de ces 90 jours, procédez comme suit :

  1. Créez votre propre journal de suivi dans CloudTrail.
  2. Stockez les journaux dans un compartiment Amazon Simple Storage Service (Amazon S3).
  3. Utilisez Amazon Athena pour interroger les journaux de votre compartiment Amazon S3.

Informations connexes

Lookup-events

Consulter les événements CloudTrail à l’aide de l’AWS CLI

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois