Maison > développement back-end > Tutoriel Python > Optimisez les coûts AWS : automatisez le nettoyage des instantanés EBS inutilisés avec Lambda

Optimisez les coûts AWS : automatisez le nettoyage des instantanés EBS inutilisés avec Lambda

DDD
Libérer: 2024-12-19 01:18:10
original
500 Les gens l'ont consulté

Un guide étape par étape pour créer et déployer une fonction Lambda économique pour la gestion des instantanés EBS

? Introduction

Bienvenue dans le monde du DevOps ! Aujourd'hui, nous allons nous plonger dans un projet passionnant d'optimisation des coûts qui s'attaque à un défi courant auquel sont confrontés les utilisateurs d'AWS : la gestion des instantanés EBS inutiles. Dans ce projet, nous allons créer un programme Python qui nettoie automatiquement :

  • Instantanés non attachés à un volume.
  • Instantanés d'instances qui ne sont plus en cours d'exécution.

Ce projet pratique est non seulement un excellent moyen de réduire vos coûts de stockage AWS, mais également une opportunité de renforcer votre compréhension de l'utilisation des ressources dans AWS. En cours de route, nous explorerons boto3, le SDK AWS pour Python, pour interagir avec les ressources AWS et les manipuler en fonction de nos besoins.

Commençons ce voyage pour automatiser les mesures de réduction des coûts et améliorer vos compétences DevOps !


? Pré-requis

Avant de nous lancer dans la construction de notre projet d’optimisation des coûts, assurons-nous que vous disposez des outils et des connaissances nécessaires. Voici ce dont vous aurez besoin :

  • Python : assurez-vous que Python est installé sur votre système. La version 3.7 ou supérieure est recommandée.
  • Connaissances de base de Python : la familiarité avec les principes fondamentaux de Python vous aidera à comprendre et à mettre en œuvre le script efficacement.
  • Compte AWS : vous aurez besoin d'accéder à un compte AWS pour interagir avec des ressources telles que les instantanés EC2 et EBS.
  • Compréhension de base d'EC2 : étant donné que nous travaillerons avec le tableau de bord et les instantanés EC2, il est crucial d'avoir une compréhension fondamentale des instances EC2.
  • AWS CLI : installez et configurez l'AWS CLI sur votre système à l'aide de la commande :
aws configure
Copier après la connexion
Copier après la connexion

Cette étape configurera vos clés d'accès, votre région et votre format de sortie pour permettre une communication transparente avec les services AWS.

Une fois ces prérequis cochés, vous serez prêt à poursuivre le projet !


? Démarrer le projet

Le code source de ce projet est disponible dans mon dépôt GitHub :

? GitHub Repo : Optimisation des coûts du cloud AWS

Suivez ces étapes pour créer et configurer votre fonction Lambda :

Créer une fonction Lambda :

  • Accédez à la console Lambda dans votre compte AWS.
  • Cliquez sur Créer une fonction et sélectionnez l'option Auteur à partir de zéro.
  • Fournissez le nom de la fonction, par exemple ebs-volume-check, et sélectionnez Python 3.12 comme moteur d'exécution.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Ajouter le code :

  • Dans l'éditeur de code de la console AWS, ouvrez le fichier lambda_function.py.
  • Copiez et collez le contenu de script.py du référentiel GitHub dans l'éditeur. Voici l’extrait de code pour référence :
aws configure
Copier après la connexion
Copier après la connexion

Déployer le code :

  • Cliquez sur le bouton Déployer pour enregistrer et appliquer les modifications.

Augmenter le délai d'attente :

  • Par défaut, le timeout d'une fonction Lambda est de 3 secondes, ce qui est insuffisant pour cette opération.
  • Allez dans l'onglet Configuration, sélectionnez Configuration générale et augmentez le délai d'attente à 10 secondes.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Testez la fonction :

  • Créez un événement de test avec des données factices et invoquez la fonction.
  • Vous rencontrerez une erreur UnauthorizedOperation pendant le test.

Cette erreur se produit car la fonction Lambda ne dispose pas des autorisations requises, ce que nous aborderons à l'étape suivante.


? Ajout des autorisations requises

Pour permettre à la fonction Lambda d'interagir avec les ressources EC2, nous devons ajouter des autorisations spécifiques à son rôle de service. Au lieu d'accorder un accès complet, nous suivrons le principe du moindre privilège pour garantir que la fonction dispose uniquement des autorisations dont elle a besoin. Suivez ces étapes :

Localisez le rôle de service :

  • Accédez à l'onglet Configuration de la fonction Lambda.
  • Sous la section Autorisations, recherchez le rôle de service associé à la fonction. Le nom du rôle y sera affiché.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Ouvrez le rôle de service dans IAM :

  • Cliquez sur le nom du rôle de service et il vous redirigera vers la console IAM.

Créer une politique en ligne :

  • Dans la console IAM, sous l'onglet Autorisations, cliquez sur Ajouter des autorisations et sélectionnez Créer une stratégie en ligne.
  • Configurez la stratégie comme suit :
  • Service : sélectionnez EC2.
  • Actions : choisissez uniquement les autorisations suivantes :
  • Décrire les instantanés
  • Décrire les instances
  • Décrire les volumes
  • Supprimer les instantanés
  • Ressources : définissez les autorisations à appliquer à toutes les ressources pour plus de simplicité. Si vous avez besoin d'un contrôle plus strict, spécifiez les ARN des ressources.

Examiner et attribuer la stratégie :

  • Cliquez sur Suivant et consultez les détails de la politique.
  • Attribuez un nom à la stratégie, par exemple, ebs-permissions.
  • Cliquez sur Créer une stratégie pour l'appliquer au rôle de service.

La politique des autorisations ebs ressemblera à ceci :

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Une fois cette stratégie en ligne ajoutée, la fonction Lambda disposera de toutes les autorisations dont elle a besoin pour décrire et supprimer efficacement les instantanés, les volumes et les instances.

Une fois les autorisations en place, testons à nouveau la fonction à l'étape suivante !


? Test de la fonction Lambda

Une fois les autorisations en place, il est temps de tester notre fonction Lambda à l'aide de scénarios réels. Suivez ces étapes pour voir comment la fonction fonctionne :

1. Premier cas d'utilisation : nettoyage des instantanés des instances supprimées

Créer une instance EC2 :

  • Lancez une instance t2.micro et nommez-la test-ebs.
  • Utilisez une AMI par défaut et assurez-vous que l'instance dispose d'un volume racine.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Créer un instantané :

  • Accédez au tableau de bord EC2 et créez un instantané à partir du volume connecté à test-ebs.
  • Attendez la fin de la création de l'instantané.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Supprimer l'instance :
Une fois l'instantané prêt, terminez l'instance test-ebs. Cela laisse un instantané d'une instance inexistante, qui est désormais redondante.

Exécutez la fonction Lambda :

  • Accédez à votre fonction Lambda dans la console AWS et testez la fonction.
  • La fonction détectera que l'instantané n'est pas attaché à une instance en cours d'exécution et le supprimera.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Vérifiez la suppression dans la section Snapshots du tableau de bord EC2.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

2. Deuxième cas d'utilisation : nettoyage des instantanés des volumes supprimés

Créer un volume EBS :

  • Créez un volume EBS gp3 de 1 Go et nommez-le ebs-volume.

Créer un instantané :

  • Accédez à la section EBS Volumes et créez un instantané à partir d'ebs-volume.
  • Attendez que l'instantané soit créé.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Supprimer le volume :
Une fois l'instantané prêt, supprimez le volume ebs. Cela laisse un instantané qui n'est attaché à aucun volume.

Exécutez la fonction Lambda :

  • Testez à nouveau la fonction Lambda.
  • La fonction identifiera que l'instantané n'est lié à aucun volume et le supprimera.
  • Confirmez la suppression dans la section Snapshots du tableau de bord EC2.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

En gérant avec succès ces deux scénarios, la fonction Lambda démontre sa capacité à identifier et à nettoyer les instantanés EBS redondants, ce qui permet de réduire les coûts et de rationaliser la gestion des ressources.


? Conclusion

Félicitations ! ? Vous venez de créer une solution d'optimisation des coûts sur AWS à l'aide de Python et Lambda. Dans ce projet, nous avons exploré comment identifier et nettoyer les instantanés EBS redondants qui ne servent plus à rien, vous aidant ainsi à économiser sur les coûts du cloud tout en améliorant la gestion des ressources.

Voici un bref récapitulatif de ce que nous avons réalisé :

  • J'ai appris à créer et configurer une fonction Lambda à partir de zéro. Utilisation de la bibliothèque boto3 d'AWS pour interagir avec les ressources EC2 par programmation.
  • A suivi le principe du moindre privilège pour garantir un accès sécurisé aux services AWS.
  • Test de scénarios réels pour valider l'efficacité de notre fonction dans le nettoyage des instantanés non attachés.

Ce projet met en évidence l'importance de l'optimisation des ressources dans un environnement cloud et vous offre une expérience pratique de l'automatisation des tâches AWS à l'aide de Python.

N'hésitez pas à personnaliser et à améliorer davantage cette fonction. Par exemple, vous pouvez configurer une règle CloudWatch pour déclencher la fonction périodiquement ou étendre la logique pour gérer des scénarios de nettoyage supplémentaires.

Merci de nous suivre et restez à l'écoute pour d'autres projets DevOps et cloud passionnants ! ?

? Pour un blog plus informatif, suivez-moi sur Hashnode, X(Twitter) et LinkedIn.

En attendant, bon apprentissage ! ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal