Lær, hvordan du konfigurerer S3-fillagring ved hjælp af denne trin-for-trin guide.

Hvis du bygger en Django-webapp, er det vigtigt at håndtere statiske aktiver og brugeruploadede mediefiler effektivt.

I et udviklingsmiljø administrerer Django disse filer. I produktionen vil du dog gerne udforske yderligere muligheder. Din brugerbase kan meget vel vokse betydeligt, og du har muligvis at gøre med meget større filer, såsom lyd og video.

Amazon Web Services (AWS) Simple Storage Service (S3) Bucket er et alternativ til hosting af statiske filer og mediefiler. Ved at integrere S3 med Django kan du aflaste byrden af ​​filhåndtering fra din server, reducere belastningen og sikre hurtigere og mere pålidelig levering af aktiver.

Trin 1: Opret en AWS-konto

Hvis du ikke har en AWS-konto, skal du navigere til AWS hjemmeside, og opret en ny konto.

Nye AWS-konti har gratis adgang til 5 GB S3 standardlagerplads hver måned i et år.

Trin 2: Opret en S3 Bucket til dit projekt

  1. Når du har oprettet din AWS-konto, skal du logge ind og søge efter S3 i søgefeltet øverst, og vælg derefter den første mulighed.
  2. instagram viewer
  3. Når du har valgt den første mulighed, får du vist en ny side. Klik på Opret spand knap:
  4. Angiv derefter et navn til din S3-spand. Du kan lade det meste af konfigurationen være standard.
  5. Rul ned til Bloker indstillinger for offentlig adgang for denne bucket sektionen skal du fjerne markeringen i Bloker al offentlig adgang indstilling, og anerkend advarslen, der vises.
  6. Når du er færdig, skal du klikke på Opret spand knap. Det vil omdirigere dig til en side, der viser en liste over de S3-bøtter, du har oprettet.

Trin 3: Opret en IAM-bruger på AWS

AWS leverer en service kaldet IAM (Identity and Access Management). Dette giver dig mulighed for at oprette en separat konto til en bestemt person eller applikation, der skal interagere med AWS-tjenester.

Du kan tildele forskellige niveauer af tilladelser til IAM-brugere, der repræsenterer enkeltpersoner eller applikationer, der interagerer med de AWS-tjenester, du har oprettet. Med IAM-brugere kan du sikre, at hver bruger kun har adgang til de ressourcer, de har brug for, og intet mere.

Af sikkerhedsmæssige årsager bør du oprette en IAM-bruger til dit Django-projekt for at interagere med din S3-bøtte. Følg disse trin for at oprette en IAM-bruger på AWS:

  1. Skriv i søgefeltet JEG ER og vælg den første mulighed. En ny side vises.
  2. Vælg i venstre side af IAM-siden Brugere, fortsæt derefter med at klikke på Tilføj brugere knap. Det åbner en anden side for at udfylde nogle oplysninger.
  3. Start med at indtaste et navn til IAM-brugeren og klikke på Næste knap i bunden: På næste side skal du vælge tilladelsesniveauerne for IAM-brugeren. Følg disse trin:
    1. Først skal du vælge Vedhæft politikker direkte mulighed fra Tilladelsesmuligheder afsnit.
    2. Dernæst skal du definere en tilladelsespolitik for din IAM-bruger. Dette vil afgøre, hvad IAM-brugeren kan og ikke kan. Da du vil have din Django-app til at downloade og uploade filer, bør du give den fuld adgang til S3-bøtten.
    3. I Tilladelsespolitikker sektion, skal du søge efter S3Fuld adgang og vælg indstillingen. Når du er færdig, skal du klikke på Næste knap.
  4. Gennemgå derefter politikkerne for IAM-brugeren og klik på Opret bruger knappen for at oprette din IAM-bruger.

Trin 4: Opret en adgangsnøgle til din IAM-bruger

I AWS refererer en adgangsnøgle til legitimationsoplysninger, du kan bruge til at godkende og sikkert få adgang til AWS-ressourcer programmatisk. Dit Django-projekt skal give disse legitimationsoplysninger for at få adgang til din S3-bøtte.

De følgende trin hjælper dig med at generere en adgangsnøgle til dit projekt.

  1. Når du har oprettet din IAM-bruger, får du en advarselsmeddelelse, der beder dig om at se brugeren. Alternativt kan du se brugeren ved at klikke på Brugernavn.
  2. Vælg derefter Sikkerhedsoplysninger fanen, rul ned for at finde Adgangsnøgler sektion, og vælg Opret adgangsnøgle.
  3. Du skal vælge en use case for din adgang, så AWS kan anbefale en alternativ mulighed, hvor det er relevant. Det påvirker ikke din adgangsnøgle. Vælg gerne en mulighed som f.eks Tredjepartstjeneste eller Lokal kode og anerkend advarslen, der dukker op. Når du er færdig, skal du klikke på Næste knap.
  4. På den næste side skal du indtaste et beskrivelsesmærke for din adgangsnøgle og klikke på Opret adgangsnøgle knap.
  5. Når du har oprettet din adgangsnøgle, kan du enten kopiere dine legitimationsoplysninger eller downloade dem som en CSV-fil. Uanset hvad, sørg for at opbevare disse data sikkert.

Trin 5: Konfigurer dit Django-projekt til S3 Bucket

For at bruge din S3-spand med et Django-projekt skal du installere disse pakker:

  • django-lager: Denne pakke hjælper dig med at definere en lagerbackend for dine filer.
  • boto3: Denne pakke er AWS Software Development Kit (SDK) for at hjælpe dit Python-projekt med at interagere med AWS.

Du kan installere disse pakker i din Python virtuelt miljø med Pythons Pip-pakkehåndtering ved at skrive denne kommando i din terminal:

pip install django-storages boto3

Når du har installeret disse pakker, skal du åbne din settings.py fil og tilføj boto3 til de installerede apps.

Den sidste ting at gøre er at konfigurere dit Django-projekt til at bruge AWS S3-bøtten. Her er den generelle konfiguration, der skal bruges:

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'

Indsæt ovenstående konfiguration i din settings.py fil og udskift værdierne i overensstemmelse hermed. Udskift din AWS_ACCESS_KEY_ID og AWS_SECRET_ACCESS_KEY med den adgangsnøgle og den hemmelige adgangsnøgle, du kopierede eller downloadede tidligere. Du bør også ændre AWS_STORAGE_BUCKET_NAME og AWS_S3_REGION_NAME til navnene på din S3-spand og region.

Du kan få regionsnavnet ved at navigere til din S3-bøtte og kopiere de sidste værdier fra AWS-regionen kolonne.

Trin 6: Test din AWS-konfiguration

Når ovenstående trin er fuldført, bør du være klar til at teste din ansøgning ved at uploade filer. Følgende kodeeksempler vil uploade filer direkte fra administrationspanelet, men du er fri til at uploade dine fra et andet sted.

Til kontekst kan du have en model, der ser sådan ud:

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

Sørg for, at du udfører de nødvendige handlinger såsom migreringer, tilføjer det til administrationspanelet, opretter en visning og andre ting, der er nødvendige for dit projekt. Sørg for at øve dig Djangos MVT-princip.

Når du er færdig, skal du navigere til dit adminpanel eller hvilken som helst formular, du har oprettet til filupload, og uploade en billedfil.

Naviger til dit hovedwebsted og bekræft, at billedet er der. Hvis det er det, skal du højreklikke på billedet og vælge Åbn billede i ny fane mulighed. På den nye fane, der indeholder billedet, vil du bemærke, at adresselinjen refererer til den S3-bøtte, du oprettede tidligere:

En anden måde at bekræfte, at din konfiguration fungerer på, er ved at navigere til din bucket på AWS-konsollen. Du finder dit billede der:

Trin 7: Saml statiske filer til din S3 Bucket

Indtil videre har du været i stand til at uploade mediefiler til din S3-bøtte; nu skal du uploade dine statiske filer.

For at gøre det skal du tilføje disse konfigurationer til din settings.py fil:

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

Åbn derefter din Kommandolinjegrænseflade (CLI) og kør denne kommando:

python manage.py collectstatic --noinput

For at bekræfte, at alt fungerer, skal du åbne din S3-spand i AWS-konsollen. Du vil se en mappe kaldet statisk.

Brug AWS S3 Bucket til meget mere

Mulighederne for AWS S3 skovle er enorme! Du bør sætte dig ind i det og lære at bruge S3 til andre formål, som at være vært for en statisk webapplikation.

At vide, hvordan du bruger S3-spande korrekt, vil spare dig for en masse tid og hjælpe dig med at bygge et bedre produkt eller en bedre løsning. Men du skal også være opmærksom på, at S3 muligvis ikke er egnet til alle tilfælde, så overvej dine projektkrav, før du bruger den.