Lär dig hur du ställer in dig med S3-fillagring med hjälp av den här steg-för-steg-guiden.
Om du bygger en Django-webbapp är det viktigt att hantera statiska tillgångar och användaruppladdade mediefiler effektivt.
I en utvecklingsmiljö hanterar Django dessa filer. I produktionen vill du dock utforska ytterligare alternativ. Din användarbas kan mycket väl växa avsevärt, och du kanske har att göra med mycket större filer, som ljud och video.
Amazon Web Services (AWS) Simple Storage Service (S3) Bucket är ett alternativ för att vara värd för statiska filer och mediafiler. Genom att integrera S3 med Django kan du avlasta bördan av filhantering från din server, minska belastningen och säkerställa snabbare och mer tillförlitlig leverans av tillgångar.
Steg 1: Skapa ett AWS-konto
Om du inte har ett AWS-konto, navigera till AWS webbplatsoch skapa ett nytt konto.
Nya AWS-konton har fri tillgång till 5 GB S3 standardlagring varje månad i ett år.
Steg 2: Skapa en S3-hink för ditt projekt
- När du har skapat ditt AWS-konto, logga in och sök efter S3 i sökfältet högst upp och välj sedan det första alternativet.
- När du har valt det första alternativet ser du en ny sida. Klicka på Skapa hink knapp:
- Ange sedan ett namn för din S3-skopa. Du kan lämna det mesta av konfigurationen som standard.
- Scrolla ner till Blockera inställningar för offentlig åtkomst för den här hinken avsnittet, avmarkera Blockera all offentlig åtkomst inställningen och bekräfta varningen som visas.
- När du är klar klickar du på Skapa hink knapp. Den omdirigerar dig till en sida som visar en lista över de S3-hinkar du har skapat.
Steg 3: Skapa en IAM-användare på AWS
AWS tillhandahåller en tjänst som heter IAM (Identity and Access Management). Detta gör att du kan skapa ett separat konto för en specifik person eller applikation som behöver interagera med AWS-tjänster.
Du kan tilldela olika nivåer av behörigheter till IAM-användare, som representerar individer eller applikationer som interagerar med AWS-tjänsterna du har skapat. Med IAM-användare kan du säkerställa att varje användare bara har tillgång till de resurser de behöver och inget mer.
Av säkerhetsskäl bör du skapa en IAM-användare för ditt Django-projekt för att interagera med din S3-hink. Följ dessa steg för att skapa en IAM-användare på AWS:
- Skriv i sökfältet JAG ÄR och välj det första alternativet. En ny sida kommer att dyka upp.
- Välj till vänster på IAM-sidan Användare, fortsätt sedan med att klicka på Lägg till användare knapp. Det kommer att öppna en annan sida för att fylla i lite information.
- Börja med att ange ett namn för IAM-användaren och klicka på Nästa knappen längst ner: På nästa sida måste du välja behörighetsnivåer för IAM-användaren. Följ dessa steg:
- Välj först Bifoga policyer direkt alternativ från Alternativ för behörigheter sektion.
- Därefter definierar du en behörighetspolicy för din IAM-användare. Detta kommer att avgöra vad IAM-användaren kan och inte kan göra. Eftersom du vill att din Django-app ska ladda ner och ladda upp filer bör du ge den full åtkomst till S3-hinken.
- I den Behörighetspolicyer avsnitt bör du söka efter S3Full Access och välj alternativet. När du är klar klickar du på Nästa knapp.
- Granska sedan policyerna för IAM-användaren och klicka på Skapa användare för att skapa din IAM-användare.
Steg 4: Skapa en åtkomstnyckel för din IAM-användare
I AWS hänvisar en åtkomstnyckel till autentiseringsuppgifter som du kan använda för att autentisera och säkert komma åt AWS-resurser programmatiskt. Ditt Django-projekt måste tillhandahålla dessa referenser för att komma åt din S3-hink.
Följande steg hjälper dig att skapa en åtkomstnyckel för ditt projekt.
- När du har skapat din IAM-användare får du ett varningsmeddelande som uppmanar dig att se användaren. Alternativt kan du se användaren genom att klicka på Användarnamn.
- Välj sedan Säkerhetsuppgifter fliken, scrolla ned för att hitta Åtkomstnycklar avsnitt och välj Skapa åtkomstnyckel.
- Du måste välja ett användningsfall för din åtkomst, så AWS kan rekommendera ett alternativt alternativ där så är lämpligt. Det påverkar inte din åtkomstnyckel. Välj gärna ett alternativ som t.ex Tredjepartstjänst eller Lokal kod och bekräfta varningen som dyker upp. När du är klar klickar du på Nästa knapp.
- På nästa sida anger du en beskrivningstagg för din åtkomstnyckel och klickar på Skapa åtkomstnyckel knapp.
- När du har skapat din åtkomstnyckel kan du antingen kopiera dina referenser eller ladda ner dem som en CSV-fil. Hur som helst, se till att hålla denna data säker och säker.
Steg 5: Konfigurera ditt Django-projekt för S3 Bucket
För att använda din S3-hink med ett Django-projekt, installera dessa paket:
- django-förråd: Detta paket hjälper dig att definiera en lagringsbackend för dina filer.
- boto3: Det här paketet är AWS Software Development Kit (SDK) för att hjälpa ditt Python-projekt att interagera med AWS.
Du kan installera dessa paket i din Python virtuell miljö med Pythons Pip-pakethanterare genom att skriva detta kommando i din terminal:
pip install django-storages boto3
När du har lyckats installera dessa paket, öppna din settings.py fil och lägg till boto3 till de installerade apparna.
Det sista du ska göra är att konfigurera ditt Django-projekt för att använda AWS S3-hinken. Här är den allmänna konfigurationen att använda:
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'
Klistra in ovanstående konfiguration i din settings.py fil och ersätt värdena därefter. Byt ut din AWS_ACCESS_KEY_ID och AWS_SECRET_ACCESS_KEY med åtkomstnyckeln och hemlig åtkomstnyckel som du kopierade eller laddade ner tidigare. Du bör också ändra AWS_STORAGE_BUCKET_NAME och AWS_S3_REGION_NAME till namnen på din S3-skopa och region.
Du kan få regionnamnet genom att navigera till din S3-hink och kopiera de senaste värdena från AWS-regionen kolumn.
Steg 6: Testa din AWS-konfiguration
När stegen ovan är klara bör du vara redo att testa din applikation genom att ladda upp filer. Följande kodexempel laddar upp filer direkt från administratörspanelen, men du är fri att ladda upp dina från en annan plats.
För sammanhanget kan du ha en modell som ser ut så här:
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
Se till att du utför de nödvändiga åtgärderna som migrering, lägga till den på adminpanelen, skapa en vy och andra saker som behövs för ditt projekt. Se till att du övar Djangos MVT-princip.
När du är klar, navigera till din adminpanel eller vilket formulär du har skapat för filuppladdning och ladda upp en bildfil.
Navigera till din huvudsajt och bekräfta att bilden finns där. Om det är det, högerklicka på bilden och välj Öppna bilden i ny flik alternativ. På den nya fliken som innehåller bilden kommer du att märka att adressfältet refererar till S3-hinken som du skapade tidigare:
Ett annat sätt att bekräfta att din konfiguration fungerar är genom att navigera till din hink på AWS-konsolen. Du hittar din bild där:
Steg 7: Samla statiska filer till din S3-hink
Hittills har du kunnat ladda upp mediefiler till din S3-hink; nu måste du ladda upp dina statiska filer.
För att göra det, lägg till dessa konfigurationer till din settings.py fil:
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_LOCATION = 'static'
Efter det öppnar du din Kommandoradsgränssnitt (CLI) och kör detta kommando:
python manage.py collectstatic --noinput
För att bekräfta att allt fungerar, öppna din S3-hink i AWS-konsolen. Du kommer att se en mapp som heter statisk.
Använd AWS S3 Bucket för mycket mer
Möjligheterna med AWS S3 skopor är enorma! Du bör bekanta dig med det och lära dig hur du använder S3 för andra ändamål, som att vara värd för en statisk webbapplikation.
Att veta hur man använder S3-skopor på rätt sätt kommer att spara mycket tid och hjälpa dig att bygga en bättre produkt eller lösning. Men du bör också vara medveten om att S3 kanske inte passar för alla fall, så överväg dina projektkrav innan du använder den.