Comment afficher la liste de mes instances Amazon EC2 connectées à Amazon EFS ?

Date de la dernière mise à jour : 07/11/2019

Je souhaite afficher la liste de mes instances Amazon Elastic Compute Cloud (Amazon EC2) qui ont monté un Amazon Elastic File System (Amazon EFS). Comment procéder ?

Brève description

Le trafic sur l'interface réseau Elastic de chaque cible de montage Amazon EFS est suivi à l'aide des journaux de flux VPC. Les journaux de flux peuvent être transmis à Amazon CloudWatch Logs. Grâce à CloudWatch Logs Insights, le flux de trafic sur l'interface réseau Elastic de la cible de montage est filtré pour fournir la liste des instances Amazon EC2 qui ont monté un Amazon EFS dans un horodatage spécifique.

Solution

Effectuez les étapes suivantes une fois. Après avoir terminé ces étapes, chaque fois que vous souhaitez répertorier les adresses IP des clients montant le système Amazon EFS, exécutez une requête pour créer une liste actualisée.

1.    Créez un groupe de journaux :

Ouvrez la console CloudWatch, puis choisissez Logs (Journaux).
Sélectionnez le menu Actions , puis sélectionnez Create Log Group (Créer un groupe de journaux).
Entrez un nom de groupe de journaux, puis sélectionnez Create Log Group (Créer un groupe de journaux).

2.    Créez un rôle Identity and Access Management (IAM) avec l'autorisation de publier des journaux de flux dans CloudWatch Logs :

Ouvrez la console IAM, puis créez un nouveau rôle IAM.
La stratégie IAM attachée à votre rôle IAM doit inclure les autorisations de publication des journaux de flux VPC dans CloudWatch et doit avoir une relation d'approbation qui permet au service de journaux de flux d'assumer le rôle.

3.    Obtenez la liste des interfaces réseau Elastic utilisées par la cible de montage de votre Amazon EFS :

Remarque : Amazon EFS aura une cible de montage différente pour chaque zone de disponibilité.

Ouvrez la console Amazon ECS.
Sélectionnez l'Amazon EFS spécifique et notez l' ID d'interface réseau pour chaque cible de montage.

4.    Créez les journaux de flux :

Ouvrez la console Amazon EC2, puis sélectionnez Network Interfaces (Interfaces réseau).
Sélectionnez toutes les interfaces réseau Elastic que vous avez notées à l'étape 3 et qui sont utilisées par la cible de montage.
Sélectionnez le menu Actions, puis Create flow log (Créer un journal de flux). Utilisez les valeurs suivantes lors de la création du journal de flux :

    Filter (Filtre) : Sélectionnez All (Tout).
    Destination : Sélectionnez Send to CloudWatch Logs (Envoyer aux journaux CloudWatch).    
    Destination log group (Groupe de journaux de destination) : choisissez le groupe de journaux créé à l'étape 1.
    IAM role (Rôle IAM) : choisissez le rôle IAM créé à l'étape 2.

Sélectionnez Créer.
Surveillez le statut du journal de flux en sélectionnant l'interface réseau Elastic pour laquelle vous avez créé un journal de flux. Dans le bas de l'écran, sélectionnez Flow Logs (Journaux de flux). Vérifiez que Status (Statut) a la valeur Active(Actif).
Le premier journal de flux doit être transmis à CloudWatch Logs dans un délai de 10 minutes environ.

5.    Vérifiez que les journaux de flux se trouvent dans CloudWatch Logs :

Ouvrez la console CloudWatch, puis choisissez Logs (Journaux).
Sélectionnez le groupe de journaux créé à l'étape 1.
Vérifiez que tous les flux de journaux créés à l'étape 4 apparaissent. Chaque interface réseau Elastic possède un flux de journaux différent.

6.    Exécutez une requête :

Pour exécuter une requête dans CloudWatch Logs Insights :

Dans la console CloudWatch, sélectionnez Insights.
Sélectionnez les groupes de journaux créés à l'étape 1 dans le menu déroulant.
Sélectionnez la durée de consultation des journaux de flux (15 dernières minutes, 30 dernières minutes, 1 heure).
Saisissez la requête suivante :

filter dstPort="2049" | stats count(*) as FlowLogEntries by srcAddr | sort FlowLogEntries desc

La requête ci-dessus passe en revue tous les journaux de flux générés pour toutes les cibles de montage et filtre les journaux dont le port de destination est Port = 2049 (les clients Amazon EFS se connectent aux cibles de montage sur le port NFS 2049). Toutes les adresses IP source uniques (adresses IP client Amazon EFS) sont récupérées et triées en fonction des connexions client les plus actives. L'activité est déterminée par le nombre d'entrées dans le journal de flux.

Sélectionnez Run Query (Exécuter une requête). La sortie contient la liste des adresses IP privées de toutes les instances Amazon EC2 sur lesquelles vous avez monté Amazon EFS.

Voici un exemple de résultat de la requête :

#          srcAddr              FlowLogEntries
1      172.31.12.60                 78
2      172.31.57.233                36
3      172.31.53.144                33
4      172.31.74.79                 30
5      172.31.23.86                 26
6      172.31.63.215                25

Pour exécuter une requête à partir de l'interface de ligne de commande AWS (AWS CLI) :

Une fois le journal de flux VPC configuré, vous pouvez utiliser une commande d'interface de ligne de commande (CLI) AWS pour exécuter la requête.

Vérifiez que l'interface de ligne de commande (CLI) AWS est mise à jour vers la dernière version :

$ pip install --upgrade awscli

Vérifiez que jq est installé :

yum install -y jq

Utilisez la requête d'interface de ligne de commande (CLI) AWS suivante à l'aide de ces paramètres de requête :

log-group-name : entrez le nom du groupe de journaux que vous avez créé à l'étape 1.

start-time / end-time : ces valeurs sont exprimées en heure Unix/époque. Utilisez le convertisseur disponible sur epochconverter.com pour convertir les horodatages lisibles par l'utilisateur en heure Unix/époque.

test.json : vous pouvez éventuellement modifier le nom du fichier json chaque fois que vous exécutez cette commande. La modification du nom évite de fusionner la sortie précédente avec la nouvelle sortie.

sleep : cette valeur (en secondes) est utilisée comme délai pendant l'exécution de la requête CloudWatch Logs Insights. La valeur saisie dépend de la durée de vérification des journaux de flux. Si vous souhaitez passer en revue les journaux pour une durée plus longue, par exemple, sur plusieurs semaines, augmentez le temps de veille.

aws logs start-query --log-group-name EFS-ENI-logs --start-time 1549002413 --end-time 1553063276 --query-string "filter dstPort="2049" | stats count(*) as FlowLogEntries by srcAddr | sort FlowLogEntries desc" >> test.json && sleep 10 && jq .queryId test.json | xargs aws logs get-query-results --query-id

Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?