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

Date de la dernière mise à jour : 01/02/2022

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.

Résolution

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

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 attachée à votre rôle IAM doit inclure les autorisations de publication des journaux de flux VPC dans CloudWatch et avoir une relation de confiance qui permet au service de 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
  5. Choisissez Create (Créer).
  6. 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).
  7. 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), puis Logs Insights.
  2. Choisissez les groupes de journaux que vous avez créés dans le menu déroulant.
  3. 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é)).
  4. Saisissez la requête ci-dessous :
| 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

    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

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


    Besoin d'aide pour une question technique ou de facturation ?