Django: Stocker et lire des fichiers sur Amazon S3 en 8 étapes

Si vous désirez plus de contenu francophone comme celui-ci, cliquer Follow ou suivez-moi sur Twitter

Comment utiliser le service S3 de Amazon afin de stoker et lire des fichiers et des images ?

Étape 0:
Avoir un project Django déjà créer d…


This content originally appeared on DEV Community and was authored by Eric Le Codeur

Si vous désirez plus de contenu francophone comme celui-ci, cliquer Follow ou suivez-moi sur Twitter

Comment utiliser le service S3 de Amazon afin de stoker et lire des fichiers et des images ?



Étape 0:
Avoir un project Django déjà créer dans lequel vous aimeriez ajouter la possibilité d'envoyer des fichiers et des images sur Amazon S3 et de les lires par la suite

Étape 1
Créer un compte Amazon S3 (https://aws.amazon.com/fr/s3/) et créer un nouveau bucket lors de la création du bucket, vous pouvez utiliser les valeurs par défaut sauf pour la sécurité s'assurer que 'Block all public access' n'est PAS coché.

Attention, ne pas mettre de fichiers avec informations sensible dans ce bucket car il est ouvert pour lecture à tous le web!

Étape 2
Une fois le bucket créé, ouvrir le bucket et aller à l'onglet
'Permissions'.

Dans la section 'Bucket Policy' cliquez sur 'Edit' et ajouter ce code et ensuite cliquez sur 'Save changes'

{
    "Version": "2012-10-17",
    "Id": "Policy1623584629734",
    "Statement": [
        {
            "Sid": "Stmt1623584623637",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::your-bucket-name/*"
        }
    ]
}

Étape 3
Utiliser le service S3 à partir de votre application Django.

Pour ce faire nous allons installer le package Django Storages et Boto3.

Django Storages permet de se connecter à différent système de storage comme Amazon S3, Dropbox, Digital Ocean, Google Cloud, etc.

Boto3 est le SDK Python pour se connecter à Amazon S3

Dans ce tutoriel nous n'allons pas utiliser directement Boto3. C'est Django Storages qui s'en occupe pour nous.

$ pip install django-storages
$ pip install boto3

Étape 4
Vous devez modifier votre fichier settings.py et y inclure les lignes suivantes

# aws settings
AWS_ACCESS_KEY_ID = '...'
AWS_SECRET_ACCESS_KEY = '...'
AWS_STORAGE_BUCKET_NAME = '...'
AWS_QUERYSTRING_AUTH = False

AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

Les AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY sont disponible dans la console de S3 en cliquant sur l'option 'My Security Credentials' dans le menu portant votre nom d'usager. (Situé en haut à droite)

Une fois sur la page de 'Your Security Credentials' click sur Access Keys et créer une nouvelle clé. Le ID et le secret vous seront donné.

Étape 5
Vous pouvez maintenant stocker des fichiers sur Amazon S3

Pour faire le upload d'images par exemple vous pouvez créer un model avec un champ ImageField

from django.db import models

class Product(models.Model):
  name = models.CharField(max_length=200)
  description = models.TextField(blank=True, null=True)
  image = models.ImageField()

Ensuite faire la migration et l'exécuter

$ python mange.py makemigrations
$ python mange.py migrate

Ajouter ce modèle à l'Admin Panel

# admin.py
from django.contrib import admin
from .models import Product

admin.site.register(Product)

Si vous n'avez pas encore de superuser pour accèder à l'Admin Panel vous pouvez en créer un

python manage.py createsuperuser

Étape 6
Vous pouvez maintenant aller dans l'Admin Panel (localhost:8000/admin), faire votre login, cliquez sur Product et ajouter un Product. L'image que vous aller choisir en cliquant sur 'Choose File' sera automatiquement envoyé dans votre bucket sur Amazon S3. (L'upload s'effectue lors de la creation du Product)

Étape 7
Vous pouvez maintenant lire les fichiers stockés sur votre Amazon S3

Par exemple pour afficher une image dans une template. Vous pouvez utiliser la propriété .url de votre champ image

<img src="{{ product.image.url }}" />

Étape 8
Il est également possible d'utiliser Amazon S3 pour stocker tous vos fichiers static de votre projet. Par exemple les fichiers css, js et images.

Pour ce faire vous devez ajouter cette ligne de code à settings.py

STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

Ce code indique à Django que vos fichiers static sont maintenant stocké sur Amazon S3.

Si vous relancer votre application (python manage.py runserver) vous remarquerez que votre application ne fonctionnera pas comme il faut car vos fichiers statics ne sont pas encore dans votre Amazon S3.

Pour les envoyers vous devez exécuter la commande:

python manage.py collectstatic

Django va donc envoyer tous vos static dans votre bucket S3

Si vous relancez l'application tout devrait être redevenu normal.



Si vous désirez plus de contenu francophone comme celui-ci, cliquer Follow ou suivez-moi sur Twitter


This content originally appeared on DEV Community and was authored by Eric Le Codeur


Print Share Comment Cite Upload Translate Updates
APA

Eric Le Codeur | Sciencx (2021-06-13T18:36:07+00:00) Django: Stocker et lire des fichiers sur Amazon S3 en 8 étapes. Retrieved from https://www.scien.cx/2021/06/13/django-stocker-et-lire-des-fichiers-sur-amazon-s3-en-8-etapes/

MLA
" » Django: Stocker et lire des fichiers sur Amazon S3 en 8 étapes." Eric Le Codeur | Sciencx - Sunday June 13, 2021, https://www.scien.cx/2021/06/13/django-stocker-et-lire-des-fichiers-sur-amazon-s3-en-8-etapes/
HARVARD
Eric Le Codeur | Sciencx Sunday June 13, 2021 » Django: Stocker et lire des fichiers sur Amazon S3 en 8 étapes., viewed ,<https://www.scien.cx/2021/06/13/django-stocker-et-lire-des-fichiers-sur-amazon-s3-en-8-etapes/>
VANCOUVER
Eric Le Codeur | Sciencx - » Django: Stocker et lire des fichiers sur Amazon S3 en 8 étapes. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/06/13/django-stocker-et-lire-des-fichiers-sur-amazon-s3-en-8-etapes/
CHICAGO
" » Django: Stocker et lire des fichiers sur Amazon S3 en 8 étapes." Eric Le Codeur | Sciencx - Accessed . https://www.scien.cx/2021/06/13/django-stocker-et-lire-des-fichiers-sur-amazon-s3-en-8-etapes/
IEEE
" » Django: Stocker et lire des fichiers sur Amazon S3 en 8 étapes." Eric Le Codeur | Sciencx [Online]. Available: https://www.scien.cx/2021/06/13/django-stocker-et-lire-des-fichiers-sur-amazon-s3-en-8-etapes/. [Accessed: ]
rf:citation
» Django: Stocker et lire des fichiers sur Amazon S3 en 8 étapes | Eric Le Codeur | Sciencx | https://www.scien.cx/2021/06/13/django-stocker-et-lire-des-fichiers-sur-amazon-s3-en-8-etapes/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.