Découvrez comment configurer le stockage de fichiers S3 à l'aide de ce guide étape par étape.

Si vous créez une application Web Django, il est essentiel de gérer efficacement les actifs statiques et les fichiers multimédias téléchargés par les utilisateurs.

Dans un environnement de développement, Django gère ces fichiers. En production, cependant, vous voudrez explorer d'autres options. Votre base d'utilisateurs pourrait bien augmenter considérablement et vous pourriez avoir affaire à des fichiers beaucoup plus volumineux, comme l'audio et la vidéo.

Le compartiment Amazon Web Services (AWS) Simple Storage Service (S3) est une alternative pour l'hébergement de fichiers statiques et multimédias. En intégrant S3 à Django, vous pouvez décharger le fardeau de la gestion des fichiers de votre serveur, réduire la charge et assurer une livraison plus rapide et plus fiable des ressources.

Étape 1: Créer un compte AWS

Si vous n'avez pas de compte AWS, accédez au Site AWS, et créez un nouveau compte.

Les nouveaux comptes AWS ont un accès gratuit à 5 Go de stockage standard S3 chaque mois pendant un an.

Étape 2: créer un compartiment S3 pour votre projet

  1. Après avoir créé votre compte AWS, connectez-vous et recherchez S3 dans la barre de recherche en haut, puis sélectionnez la première option.
  2. Après avoir sélectionné la première option, vous verrez une nouvelle page. Clique le Créer un bucket bouton:
  3. Ensuite, fournissez un nom pour votre compartiment S3. Vous pouvez laisser la plupart de la configuration par défaut.
  4. Faites défiler jusqu'à Paramètres de blocage de l'accès public pour ce compartiment section, décochez la Bloquer tous les accès publics paramètre et acquittez l'avertissement qui s'affiche.
  5. Une fois terminé, cliquez sur le Créer un bucket bouton. Il vous redirigera vers une page qui affiche une liste des compartiments S3 que vous avez créés.

Étape 3: Créer un utilisateur IAM sur AWS

AWS fournit un service appelé IAM (Identity and Access Management). Cela vous permet de créer un compte distinct pour une personne ou une application spécifique qui doit interagir avec les services AWS.

Vous pouvez attribuer différents niveaux d'autorisations aux utilisateurs IAM, représentant des individus ou des applications qui interagissent avec les services AWS que vous avez créés. Avec les utilisateurs IAM, vous pouvez vous assurer que chaque utilisateur n'a accès qu'aux ressources dont il a besoin et rien de plus.

Pour des raisons de sécurité, vous devez créer un utilisateur IAM pour votre projet Django afin d'interagir avec votre compartiment S3. Suivez ces étapes pour créer un utilisateur IAM sur AWS :

  1. Dans la barre de recherche, tapez JE SUIS et sélectionnez la première option. Une nouvelle page apparaîtra.
  2. Sur le côté gauche de la page IAM, sélectionnez Utilisateurs, puis cliquez sur le Ajouter des utilisateurs bouton. Il ouvrira une autre page pour remplir certaines informations.
  3. Commencez par saisir un nom pour l'utilisateur IAM et cliquez sur le Suivant bouton en bas: Sur la page suivante, vous devez sélectionner les niveaux d'autorisation pour l'utilisateur IAM. Suivez ces étapes:
    1. Tout d'abord, sélectionnez le Joindre directement les politiques option de la Options d'autorisations section.
    2. Ensuite, définissez une stratégie d'autorisation pour votre utilisateur IAM. Cela déterminera ce que l'utilisateur IAM peut et ne peut pas faire. Puisque vous souhaitez que votre application Django télécharge et télécharge des fichiers, vous devez lui donner un accès complet au compartiment S3.
    3. Dans le Politiques d'autorisations section, vous devez rechercher S3FullAccess et sélectionnez l'option. Une fois terminé, cliquez sur le Suivant bouton.
  4. Ensuite, passez en revue les stratégies de l'utilisateur IAM et cliquez sur le Créer un utilisateur bouton pour créer votre utilisateur IAM.

Étape 4: Créer une clé d'accès pour votre utilisateur IAM

Dans AWS, une clé d'accès fait référence aux informations d'identification que vous pouvez utiliser pour vous authentifier et accéder en toute sécurité aux ressources AWS par programmation. Votre projet Django doit fournir ces informations d'identification pour accéder à votre compartiment S3.

Les étapes suivantes vous aideront à générer une clé d'accès pour votre projet.

  1. Après avoir créé votre utilisateur IAM, vous recevrez un message d'alerte vous invitant à afficher l'utilisateur. Alternativement, vous pouvez voir l'utilisateur en cliquant sur le Nom d'utilisateur.
  2. Ensuite, sélectionnez le Identifiants de sécurité onglet, faites défiler vers le bas pour trouver l'onglet Clés d'accès section, et sélectionnez Créer une clé d'accès.
  3. Vous devrez sélectionner un cas d'utilisation pour votre accès, afin qu'AWS puisse recommander une option alternative le cas échéant. Cela n'affecte pas votre clé d'accès. N'hésitez pas à sélectionner une option telle que Service tiers ou Indicatif local et accusez réception de l'avertissement qui s'affiche. Une fois terminé, cliquez sur le Suivant bouton.
  4. Sur la page suivante, entrez une balise de description pour votre clé d'accès et cliquez sur le Créer une clé d'accès bouton.
  5. Après avoir créé votre clé d'accès, vous pouvez soit copier vos informations d'identification, soit les télécharger sous forme de fichier CSV. Dans tous les cas, assurez-vous de conserver ces données en toute sécurité.

Étape 5: Configurez votre projet Django pour le compartiment S3

Pour utiliser votre bucket S3 avec un projet Django, installez ces packages :

  • django-stockages: Ce package vous aidera à définir un backend de stockage pour vos fichiers.
  • boto3: Ce package est l'AWS Kit de développement logiciel (SDK) pour aider votre projet Python à interagir avec AWS.

Vous pouvez installer ces packages dans votre Environnement virtuel Python avec le gestionnaire de packages Pip de Python en tapant cette commande dans votre terminal :

pip install django-storages boto3

Une fois que vous avez installé ces packages avec succès, ouvrez votre paramètres.py déposer et ajouter boto3 aux applications installées.

La dernière chose à faire est de configurer votre projet Django pour utiliser le compartiment AWS S3. Voici la configuration générale à utiliser :

AWS_ACCESS_KEY_ID = 'AWS_ACCESS_KEY_ID '
AWS_SECRET_ACCESS_KEY = 'AWS_SECRET_ACCESS_KEY'
AWS_STORAGE_BUCKET_NAME = 'AWS_STORAGE_BUCKET_NAME'
AWS_S3_SIGNATURE_NAME = 's3v4',
AWS_S3_REGION_NAME = 'AWS_S3_REGION_NAME'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
AWS_S3_VERITY = True
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

Collez la configuration ci-dessus dans votre paramètres.py fichier et remplacez les valeurs en conséquence. Remplacez votre AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY avec la clé d'accès et la clé d'accès secrète que vous avez copiées ou téléchargées précédemment. Vous devriez aussi changer le AWS_STORAGE_BUCKET_NAME et AWS_S3_REGION_NAME aux noms de votre compartiment S3 et de votre région.

Vous pouvez obtenir le nom de la région en accédant à votre compartiment S3 et en copiant les dernières valeurs du Région AWS colonne.

Étape 6: testez votre configuration AWS

Une fois les étapes ci-dessus terminées, vous devriez être prêt à tester votre application en téléchargeant des fichiers. Les exemples de code suivants téléchargeront des fichiers directement depuis le panneau d'administration, mais vous êtes libre de télécharger les vôtres depuis un autre endroit.

Pour le contexte, vous pouvez avoir un modèle qui ressemble à ceci :

classPost(models.Model):
title = models.CharField(max_length=225, blank=False, null=False)
content = models.TextField('Post Body', blank=False, null=False)
author = models.CharField(max_length=225, blank=False, null=False)
date_published = models.DateTimeField(auto_now=True)
image = models.ImageField(upload_to='posts')

def__str__(self):
return self.title

Assurez-vous d'effectuer les opérations nécessaires telles que les migrations, l'ajout au panneau d'administration, la création d'une vue et d'autres éléments nécessaires à votre projet. Assurez-vous de pratiquer Le principe MVT de Django.

Une fois que vous avez terminé, accédez à votre panneau d'administration ou à tout autre formulaire que vous avez créé pour le téléchargement de fichiers, et téléchargez un fichier image.

Accédez à votre site principal et confirmez que l'image s'y trouve. Si c'est le cas, faites un clic droit sur l'image et sélectionnez le Ouvrir l'image dans un nouvel onglet option. Dans le nouvel onglet contenant l'image, vous remarquerez que la barre d'adresse fait référence au compartiment S3 que vous avez créé précédemment :

Une autre façon de confirmer que votre configuration fonctionne consiste à accéder à votre compartiment sur la console AWS. Vous y trouverez votre image :

Étape 7: collecter des fichiers statiques dans votre compartiment S3

Jusqu'à présent, vous avez pu télécharger des fichiers multimédias dans votre compartiment S3; maintenant, vous devez télécharger vos fichiers statiques.

Pour ce faire, ajoutez ces configurations à votre paramètres.py déposer:

STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_LOCATION = 'static'

Après cela, ouvrez votre Interface de ligne de commande (CLI) et exécutez cette commande :

python manage.py collectstatic --noinput

Pour confirmer que tout fonctionne, ouvrez votre compartiment S3 dans la console AWS. Vous verrez un dossier appelé statique.

Utilisez le compartiment AWS S3 pour bien plus encore

Les possibilités des buckets AWS S3 sont énormes! Vous devez vous familiariser avec lui et apprendre à utiliser S3 à d'autres fins, comme l'hébergement d'une application Web statique.

Savoir utiliser correctement les compartiments S3 vous fera gagner beaucoup de temps et vous aidera à créer un meilleur produit ou une meilleure solution. Mais vous devez également savoir que S3 peut ne pas convenir à tous les cas, alors tenez compte des exigences de votre projet avant de l'utiliser.