Comment puis-je afficher une liste de mes instances Amazon EC2 connectées à Amazon EFS ?

Lecture de 6 minute(s)
0

Je souhaite voir une liste de mes instances Amazon Elastic Compute Cloud (Amazon EC2) qui ont monté un Amazon Elastic File System (Amazon EFS). Comment puis-je procéder ?

Brève description

Les journaux de flux VPC sont utilisés pour suivre le trafic sur l'interface réseau Elastic de chaque cible de montage Amazon EFS. 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

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'Interface de la ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente d'AWS CLI.

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.

Créer un groupe de journaux

  1. Ouvrez la console CloudWatch.
  2. Dans le panneau de navigation, choisissez Logs (Journaux), puis Log groups (Groupe de journaux).
  3. Choisissez Create log group (Créer un groupe de journaux).
  4. Saisissez un nom de groupe de journaux, un paramètre de rétention et un ARN de clé KMS facultatif. Vous pouvez également ajouter des identifications ici.
  5. Choisissez Create (Créer).

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

  1. Ouvrez la console IAM.
  2. Dans le panneau de navigation, sous Access management (Gestion des accès), choisissez Roles (Rôles).
  3. Choisissez Create role (Créer un rôle) et créez un rôle IAM.
  4. La politique IAM associée à votre rôle IAM doit inclure les autorisations de publication des journaux de flux VPC sur CloudWatch. De même, il doit avoir une relation d'approbation qui permet au service des journaux de flux d'assumer le rôle.

Obtenir la liste des interfaces réseau Elastic utilisées par la cible de montage de votre Amazon EFS

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

  1. Ouvrez la console Amazon EFS.
  2. Sous File systems (Systèmes de fichiers), choisissez l'Amazon EFS spécifique, puis View details (Afficher les détails).
  3. Cliquez sur Network (Réseau) et notez l'ID d'interface réseau de chaque cible de montage.

Créer les journaux de flux

  1. Ouvrez la console Amazon EC2.
  2. Choisissez Network & Security (Réseau et sécurité), puis Network Interfaces (Interfaces réseau).
  3. Choisissez toutes les interfaces réseau Elastic utilisées par la cible de montage.
  4. Dans le menu Actions, choisissez Create flow log (Créer un journal de flux). Utilisez les valeurs suivantes lors de la création du journal de flux :
  • Nom : facultatif
  • Filtre : sélectionnez All (Tout).
  • Intervalle d'agrégation maximal : choisissez entre 10 minutes ou 1 min par défaut.
  • Destination : sélectionnez Send to CloudWatch logs (Envoyer vers CloudWatch Logs).
  • Groupe de journaux de destination : choisissez le groupe de journaux que vous avez créé.
  • Rôle IAM : choisissez le rôle IAM que vous avez créé.
  • Format d'enregistrement du journal : choisissez entre le format par défaut AWS ou le format personnalisé.
  • Identification : facultatif
  1. Choisissez Create (Créer).
  2. Contrôlez le statut du journal de flux en choisissant l'interface réseau Elastic spécifique pour laquelle vous avez créé un journal de flux. En bas de l'écran, choisissez Flow logs (Journaux de flux). Vérifiez que Status (Statut) a la valeur Active (Actif).
  3. Les premiers journaux de flux sont transférés vers CloudWatch Logs après environ 10 minutes.

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

  1. Ouvrez la console CloudWatch, puis choisissez Logs (Journaux).
  2. Choisissez les groupes de journaux créés à l'étape 1.
  3. Vérifiez que tous les flux de journaux que vous avez créés s'affichent. Chaque interface réseau Elastic a un flux de journaux différent.

Exécutez une requête

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

  1. Dans la console CloudWatch, choisissez Logs (Journaux), puisLogs Insights (Journaux Insights). **- Choisissez les groupes de journaux que vous avez créés dans le menu déroulant.
  • Choisissez la durée pendant laquelle vous souhaitez consulter les journaux de flux (5 m, 30 m, 1 h, 3 h, 12 ou Custom (Personnalisé)).
  • Saisissez la requête ci-dessous :**
fields @timestamp, @message | filter dstPort="2049" | stats count(*) as FlowLogEntries by srcAddr | sort FlowLogEntries desc

Remarque : cette requête passe en revue tous les journaux de flux générés pour toutes les cibles de montage. Elle filtre les journaux dont le port de destination est défini sur Port=2049 (les clients Amazon EFS se connectent pour monter des cibles sur le port NFS 2049). Elle récupère toutes les adresses IP sources uniques (adresses IP du client Amazon EFS) et les trie en fonction des connexions client les plus actives. L'activité est fonction du nombre d'entrées dans le journal de flux.

  • Choisissez Run query (Exécuter la 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      111.22.33.44                 78
2      111.55.66.77                36
3      111.88.99.000                33

Exécution d'une requête à l'aide d'AWS CLI <br>

Pour exécuter une requête à partir d'AWS CLI, procédez comme suit :

  1. Une fois le journal de flux VPC configuré, vous pouvez utiliser une commande AWS CLI pour exécuter la requête.
  2. Vérifiez qu'AWS CLI est mise à jour (version la plus récente) :
$ pip install --upgrade awscli
  • Vérifiez que jq est bien installé :
yum install -y jq
  • Utilisez la requête d'AWS CLI suivante à l'aide de ces paramètres de requête :
  • log-group-name : saisissez le nom du groupe de journaux que vous avez créé.
  • start-time / end-time (heure de début/heure de fin) : ces valeurs sont exprimées en heure Unix/Epoch. Utilisez le convertisseur d'époque pour convertir des horodatages lisibles par l'homme en heure Unix/Epoch.
  • 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 (veille) : cette valeur (en secondes) est utilisée comme retard pendant l'exécution de la requête de 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-Flowlogs --start-time 1643127618 --end-time 1643128901 --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

---**

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans