GNU/Linux >> Tutoriels Linux >  >> Linux

Supprimer 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 de blocs hautes performances facile à utiliser. C'est comme un disque externe qui peut être attaché à une instance EC2 et utilisé pour y stocker nos données. Si les volumes EBS ne sont pas utilisés et ne sont pas nécessaires et toujours disponibles dans le compte, AWS vous les facturera inutilement. Pour réduire les coûts, nous verrons la fonction Lambda qui peut être utilisée pour rechercher et supprimer ces volumes EBS inutilisés.

Pré-requis

  1. Compte AWS (créez-le si vous n'en avez pas).
  2. Compréhension de base de l'instance EC2, cliquez ici pour en savoir plus sur l'instance EC2.
  3. Compréhension de base de Lambda, cliquez ici pour en savoir plus sur les fonctions Lambda.

Qu'allons-nous faire ?

  1. Connectez-vous à AWS.
  2. Créez une fonction Lambda pour supprimer les volumes EBS inutilisés.

Connexion à AWS

  1. Cliquez ici pour accéder à la page de connexion AWS.

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

Une fois que nous aurons réussi à nous connecter à AWS, nous verrons la console principale avec tous les services répertoriés.

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

Cliquez sur "Services" en haut à gauche, recherchez "EC2" et accédez au tableau de bord principal d'EC2.

Sur le tableau de bord principal d'EC2, faites défiler vers le bas et cliquez sur "Volumes" sous "Elastic Block Storage ".

Ici, vous verrez tous les volumes EBS que vous avez dans la région sélectionnée. Les volumes avec l'état "disponible" sont des volumes inutilisés et ne sont attachés à aucune des instances EC2. Ces volumes peuvent être supprimés en toute sécurité s'ils ne contiennent pas de données importantes ou s'ils ne contiennent aucune donnée.

Les volumes peuvent être supprimés de cette console, mais s'il y a des centaines à des milliers de volumes inutilisés volumes, il est préférable d'avoir une certaine automatisation en place.

Pour automatiser le processus de suppression des volumes inutilisés, nous pouvons utiliser les "Fonctions Lambda". Cliquez sur "Services" en haut à gauche de l'écran et recherchez "Lambda".

Sur le tableau de bord principal de Lambda, cliquez sur "Créer une fonction".

Créez une fonction avec "Auteur à partir de zéro", nommez la fonction à créer et choisissez le Runtime. Ici, nous allons voir une fonction Lambda avec Python Runtime pour automatiser le processus de suppression des volumes EBS inutilisés. Cliquez sur "Créer une fonction" pour continuer.

Vous verrez l'écran suivant avec l'exemple de code de fonction.

Utilisez le code suivant pour supprimer les volumes EBS inutilisés. Supprimez le code de fonction existant et collez le code suivant dans la zone de code de fonction. Si vous ne souhaitez pas supprimer les volumes EBS inutilisés spécifiques, étiquetez-les en tant que "Nom :NPD". 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). '] =='Nom' :
                    value=tag['Valeur']
                    if value !='DND' and vol.state=='available' :
                          vid=vol.id 

Ou vous pouvez spécifier la liste des volumes EBS inutilisés qui doivent être supprimés.

importer 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()
        imprimer ('Supprimé ' +vid)

Enregistrer 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, cliquez sur "Sélectionner un événement test" -> Configurer un événement test.

Sur l'écran suivant, nommez l'événement et conservez le modèle d'événement tel quel et cliquez 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 stratégies requises à la fonction Lambda. Pour attribuer la stratégie requise, faites défiler vers le bas et cliquez sur "Afficher le rôle delete-unused-ebs-volumes-role-ruemgr4x" et ouvrez-le dans la nouvelle fenêtre.

Cliquez sur "Attach Policy" pour attacher la stratégie requise à ce rôle IAM.

Recherchez EC2 et attachez la stratégie "AmazonEC2FullAccess". Cette stratégie donnera un accès complet à la fonction Lambda sur les instances EC2.

Maintenant, nous sommes prêts à exécuter la fonction. Cliquez sur "Tester".

Une fois que vous avez exécuté la fonction, vous pouvez voir les journaux dans le résultat de l'exécution.

Vous pouvez confirmer si le volume EBS inutilisé a été supprimé ou non en accédant au tableau de bord principal de l'instance EC2.

Ici, comme vous le voyez, 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.

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


Linux
  1. Créer une instance EC2 sur AWS à l'aide de Terraform

  2. Comment créer un rôle IAM dans AWS à l'aide de Terraform

  3. Configuration du stockage par blocs sur les serveurs Linux

  4. Configuration du stockage par blocs sur les serveurs Windows

  5. Utiliser sed pour supprimer un bloc de texte

Gérer les files d'attente AWS SQS à l'aide d'aws-cli

Comment gérer AWS Cloudwatch à l'aide d'aws-cli

Créer un compartiment S3 sur AWS à l'aide de Terraform

Comment créer un compartiment S3 à l'aide de Python Boto3 sur AWS

Comment créer un événement dans AWS Cloudwatch pour déclencher une fonction Lambda

Comment bloquer un port à l'aide d'un pare-feu sous Linux