Supprime les volumes EBS (Elastic Block Storage) inutilisés sur AWS à l’aide d’une fonction Lambda.

Amazon Elastic Block Store (EBS) est un service de stockage en bloc facile à utiliser et très performant. C’est comme un disque externe que l’on peut attacher à une Instance EC2 et utiliser pour y stocker nos données. Si les Volumes EBS ne sont pas utilisés, qu’ils ne sont pas nécessaires et qu’ils sont encore disponibles sur le compte, alors AWS te les facturera inutilement. Pour économiser des frais, nous allons voir la fonction Lambda qui peut être utilisée pour trouver et supprimer ces Volumes EBS inutilisés.

Pré-requis

  1. Compte AWS (Créer si tu n’en as pas).
  2. Compréhension de base de EC2 Instance, cliqueici pour en savoir plus sur EC2 Instance.
  3. Compréhension de base de Lambda,cliqueici pour en savoir plus sur les Fonctions Lambda.

Que ferons-nous?

  1. Connecte-toi à AWS.
  2. Crée une fonction Lambda pour supprimer les volumes EBS inutilisés.

Connecte-toi à AWS

  1. Clique sur ici pour aller sur la page de connexion d’AWS.

Lorsque nous cliquons sur le lien ci-dessus, nous verrons une page Web comme suit où nous devons nous connecter à l’aide de nos informations de connexion.

Une fois que nous nous sommes connectés à AWS avec succès, nous verrons la console principale avec tous les services répertoriés.

Crée une fonction Lambda pour supprimer les volumes EBS inutilisés.

Clique sur les « Services » en haut à gauche, cherche « EC2 » et accède au tableau de bord principal d’EC2.

Sur le tableau de bord principal d’EC2, fais défiler la page et clique sur « Volumes » sous « Elastic Block Stockage« .

Ici, tu verras tous les Volumes EBS que tu as dans la région sélectionnée. Les volumes dont l’état est « disponible » sont des volumes inutilisés et ne sont rattachés à aucune des Instances EC2. Tu peux supprimer ces volumes en toute sécurité s’ils ne contiennent pas de données importantes ou s’ils n’ont pas de données sur eux.

Les volumes peuvent être supprimés depuis cette console, mais s’il y a 100s-1000s de inutilisésvolumes, il est préférable de mettre en place une certaine automatisation.

Pour automatiser le processus de suppression des volumes inutilisés, nous pouvons utiliser des « Fonctions Lambda ». Clique sur « Services » en haut à gauche de l’écran et cherche « Lambda ».

Sur le tableau de bord principal de Lambda, clique sur « Créer une fonction ».

Crée une fonction avec « Author from Scratch », nomme la fonction à créer et choisis le Runtime. Ici, nous allons voir une fonction Lambda avec le Runtime Python pour automatiser le processus de suppression des Volumes EBS inutilisés. Clique sur « Créer la fonction » pour continuer.

Tu verras l’écran suivant avec l’exemple de code de fonction.

Utilise le code suivant pour supprimer les Volumes EBS inutilisés. Supprime le code de fonction existant et colle le code suivant dans la case du code de fonction. Si tu ne veux pas supprimer les Volumes EBS spécifiques inutilisés, marque-les comme « Nom : DND ». Le code suivant ne supprimera pas ces volumes.

import boto3
ec2 = boto3.resource('ec2',region_name='eu-west-3')
def lambda_handler(event, context):
    for vol in ec2.volumes.all():
        if  vol.state=='available':
            if vol.tags is None:
                vid=vol.id
                v=ec2.Volume(vol.id)
                v.delete()
                print ('Deleted ' +vid)
                continue
            for tag in vol.tags:
                if tag['Key'] == 'Name':
                    value=tag['Value']
                    if value != 'DND' and vol.state=='available':
                        vid=vol.id
                        v=ec2.Volume(vol.id)
                        v.delete()
                        print ('Deleted ' +vid)

Ou tu peux spécifier la liste des Volumes EBS inutilisés qui doivent être supprimés.

import boto3
ec2 = boto3.resource('ec2',region_name='eu-west-3')
volume_ids = ['vol-029af2107c0a0807d', ‘vol-029af2107c0a08123’]
def lambda_handler(event, context):
    for volid in volume_ids:
        vid=volid
        v=ec2.Volume(vid)
        v.delete()
        print ('Deleted ' +vid)

Enregistre la fonction en cliquant sur le bouton Enregistrer.

Avant d’exécuter/tester le code, nous devons créer un événement. Nous allons créer un événement simple. Pour créer un événement, clique sur « Sélectionner un événement de test » – > Configurer l’événement de test.

Sur l’écran suivant, nomme l’événement et garde le modèle d’événement tel quel, puis clique sur « Créer ».

Une fois que le code et l’événement sont prêts, la dernière chose qui reste avant de tester ou d’exécuter la fonction est d’attribuer les politiques requises à la fonction Lambda. Pour attribuer la politique requise, fais défiler la page et clique sur « Afficher le rôle delete-unused-ebs-volumes-role-ruemgr4x » et ouvre-le dans la nouvelle fenêtre.

Clique sur « Attacher la politique » pour attacher la politique requise à ce rôle IAM.

Cherche EC2 et attache la politique « AmazonEC2FullAccess ». Cette politique donnera un accès complet à la fonction Lambda sur les instances EC2.

Maintenant, nous sommes prêts à exécuter la Fonction. Clique sur « Test ».

Une fois que tu as exécuté la fonction, tu peux voir les journaux dans Résultat de l’exécution.

Tu peux confirmer si le volume EBS inutilisé a été/est supprimé ou non en allant dans le tableau de bord principal de l’instance EC2.

Ici, comme tu le vois, le volume EBS inutilisé n’est plus disponible dans la console, ce qui signifie qu’il a été supprimé avec succès par la fonction Lambda.

Conclusion

Dans cet article, nous avons vu comment écrire une Fonction Lambda pour supprimer les Volumes EBS inutilisés. Cela peut nous aider à économiser quelques frais supplémentaires sur le compte AWS.

Vous aimerez aussi...