[Video] Génération et Utilisation des URL Pré-signées S3
Objectif
L’objectif de ce lab est d’apprendre à générer et utiliser des URL pré-signées S3 pour accéder temporairement à un objet privé stocké dans un bucket S3, sans modifier les permissions du bucket.
Nous allons :
✅ Créer un bucket S3 privé.
✅ Envoyer un fichier dans le bucket.
✅ Générer une URL pré-signée avec AWS CLI et Python (Boto3).
✅ Tester l’accès au fichier via l’URL générée.
Architecture du Lab
Nous allons créer un bucket S3 privé et y stocker un fichier. Ensuite, nous allons générer une URL pré-signée qui permettra à un utilisateur d’accéder temporairement à ce fichier sans avoir besoin d’un accès IAM direct.
📌 Exemple d’URL pré-signée générée :
https://mon-bucket-s3.s3.amazonaws.com/monfichier.txt
⏳ L’URL ne sera valide que pour une durée limitée (ex: 10 minutes).
Étape 1 : Créer un Bucket S3 Privé
📌 Via la Console AWS :
- Aller dans S3 > Créer un bucket.
- Donner un nom unique (ex: mon-bucket-presigned-url-XYZ). Choisissez un nombre aléatoire pour XYZ.
- Choisir une région AWS (ex: eu-west-1).
- Garder les permissions par défaut → Bloquer l’accès public.
- Cliquer sur Créer un bucket.
📌 Via AWS CLI :
aws s3api create-bucket --bucket mon-bucket-presigned-url-362 --region eu-west-1 --create-bucket-configuration LocationConstraint=eu-west-1
Vérifier que le bucket est bien créé :
aws s3 ls
Étape 2 : Ajouter un Fichier dans le Bucket
Ajoutons un fichier de test :
echo “LeCloudFacile.com est une EdTech Cloud & DevOps” > fichier-prive.txt
echo “LeCloudFacile.com est une EdTech” > fichier-prive.txt
aws s3 cp fichier-prive.txt s3://mon-bucket-presigned-url-XYZ/
Vérifier l’upload :
aws s3 ls s3://mon-bucket-presigned-url-XYZ/
Étape 3 : Générer une URL Pré-signée avec AWS CLI
📌 Générons une URL pré-signée valable 2 minutes (120 secondes) :
aws s3 presign s3://mon-bucket-presigned-url-XYZ/fichier-prive.txt --expires-in 120
🔹 Copie et teste l’URL dans ton navigateur.
🔹 Tu devrais voir le contenu du fichier.
Étape 4 : Générer une URL Pré-signée avec Python (Boto3)
📌 Installe Boto3 si ce n’est pas fait :
pip install boto3
📌 Script Python pour générer une URL pré-signée :
import boto3
# Configurer le client S3
s3_client = boto3.client("s3")
# Paramètres
bucket_name = "mon-bucket-presigned-url"
object_name = "fichier-prive.txt"
expiration = 600 # 10 minutes
# Génération de l'URL pré-signée
url_presignee = s3_client.generate_presigned_url(
"get_object",
Params={"Bucket": bucket_name, "Key": object_name},
ExpiresIn=expiration,
)
print("URL Pré-signée :", url_presignee)
📌 Exécute le script et copie l’URL générée dans ton navigateur.
Étape 5 : Tester et Expirer l’URL
- Tester l’URL dans un navigateur pour voir si elle fonctionne.
Attendre 10 minutes et essayer à nouveau → l’URL doit être expirée.
Étape 6 : Nettoyage des Ressources
Supprime le fichier et le bucket :
aws s3 rm s3://mon-bucket-presigned-url/fichier-prive.txt
aws s3 rb s3://mon-bucket-presigned-url --force
Conclusion
✔️ Nous avons appris à générer et utiliser des URL pré-signées pour un accès temporaire sécurisé aux objets S3.
✔️ Nous avons utilisé AWS CLI et Boto3 (Python) pour automatiser ce processus.
✔️ Nous avons testé l’expiration automatique de l’URL.
💡 Bonus : Essaie de générer une URL pour uploader un fichier avec put_object ! 🚀