Développer avec AWS Boto3 en Python
Parfois les outils d’Infra As Code ne répondent à certaines manipulations ou certains besoins. Vous voulez apprendre à développer des lambda, à manipuler vos ressources AWS avec du code en Python ? Donc, vous devrez utiliser la librairie Boto3.
Boto est le nom du kit de développement logiciel (SDK) Python pour AWS. Il vous permet de créer, mettre à jour et supprimer directement des ressources AWS à partir de vos scripts Python. Ce SDK permet de simplifier l’accès aux ressources AWS via des classes plutôt qu’aux API d’AWS directement.
Ce SDK sont très documenté (trop où s’y perd au début)
Pour info: Savez-vous pourquoi on l’appelle “Boto”? Boto est un mot portugais donné à plusieurs races de dauphins des fleuves Amazone et Orinoco.
Installation de la libriaire boto3
La première chose à faire avant d’installer Boto3 est de mettre en place un environnement virtuel python. Personellement, j’utilise pyenv. Mais rien ne vous empêche de recourir à d’autres outils comme virtualenv. **Attention Boto3 requiert au minima une version 3 de python.
Maintenant que notre environnement virtuel est disponible, nous pouvons
installer la librairie boto3
.
Configuration de l’accès
En fait si vous avez déjà installé la CLI d’AWS le plus dur est fait. En effet, ce SDK utilise sa configuration pour accéder aux de connexion.
Mais pour respecter les bonnes pratiques, je vous recommande de créer un
utilisateur dédié en limitant ces droits d’accès aux seules ressources
manipulées. Par exemple, un compte S3user
pour accéder aux ressources des
buckets S3.
Vous pouvez le faire avec la console, mais faisons plutôt avec la CLI. Pour
notre tutoriel, nous allons manipuler les données EC2 donc je vais créer un
utilisateur ec2user
et lui donner juste accès aux ressources EC2.
À présent créons la stratégie
IAM ↗.
Commençons par créer un fichier ec2-policy.json
avec ce contenu :
Créons-la :
Maintenant attachons la stratégie à notre utilisateur :
!!!!! Clarifier assume role
Notre premier script
Notre premier script permettra juste de lister les instances ec2 :