Opi ottamaan käyttöön S3-tiedostojen tallennus tämän vaiheittaisen oppaan avulla.
Jos olet rakentamassa Django-verkkosovellusta, on tärkeää käsitellä staattista omaisuutta ja käyttäjien lataamia mediatiedostoja tehokkaasti.
Kehitysympäristössä Django hallitsee näitä tiedostoja. Tuotannossa kannattaa kuitenkin tutkia muita vaihtoehtoja. Käyttäjäkuntasi voi hyvinkin kasvaa merkittävästi, ja saatat käsitellä paljon suurempia tiedostoja, kuten ääntä ja videota.
Amazon Web Services (AWS) Simple Storage Service (S3) -ämpäri on yksi vaihtoehto staattisten ja mediatiedostojen isännöintiin. Integroimalla S3:n Djangon kanssa voit kuormittaa tiedostojenhallinnan taakkaa palvelimeltasi, vähentää kuormitusta ja varmistaa nopeamman ja luotettavamman omaisuuden toimituksen.
Vaihe 1: Luo AWS-tili
Jos sinulla ei ole AWS-tiliä, siirry kohtaan AWS-sivustoja luo uusi tili.
Uusilla AWS-tileillä on ilmainen pääsy 5 Gt: n vakiotallennustilaan kuukausittain vuoden ajan.
Vaihe 2: Luo S3-ämpäri projektillesi
- Kun olet luonut AWS-tilisi, kirjaudu sisään ja etsi S3 yläreunan hakupalkissa ja valitse sitten ensimmäinen vaihtoehto.
- Kun olet valinnut ensimmäisen vaihtoehdon, näet uuden sivun. Klikkaa Luo ämpäri painike:
- Anna seuraavaksi nimi S3-ämpärillesi. Voit jättää suurimman osan määrityksistä oletusasetuksiksi.
- Vieritä alas kohtaan Estä tämän ryhmän julkisen käytön asetukset -osiosta, poista valinta Estä kaikki julkiset käyttöoikeudet asetusta ja kuittaa näkyviin tuleva varoitus.
- Kun olet valmis, napsauta Luo ämpäri -painiketta. Se ohjaa sinut sivulle, joka näyttää luettelon luomistasi S3-ämpeistä.
Vaihe 3: Luo IAM-käyttäjä AWS: ssä
AWS tarjoaa IAM-nimisen palvelun (Identity and Access Management). Tämän avulla voit luoda erillisen tilin tietylle henkilölle tai sovellukselle, jonka on oltava vuorovaikutuksessa AWS-palvelujen kanssa.
Voit määrittää eritasoisia käyttöoikeuksia IAM-käyttäjille, jotka edustavat henkilöitä tai sovelluksia, jotka ovat vuorovaikutuksessa luomiesi AWS-palvelujen kanssa. IAM-käyttäjien avulla voit varmistaa, että jokaisella käyttäjällä on pääsy vain tarvitsemiinsa resursseihin eikä mitään muuta.
Turvallisuussyistä sinun tulee luoda Django-projektillesi IAM-käyttäjä, joka on vuorovaikutuksessa S3-säilösi kanssa. Luo IAM-käyttäjä AWS: ssä seuraavasti:
- Kirjoita hakupalkkiin MINÄ OLEN ja valitse ensimmäinen vaihtoehto. Uusi sivu tulee näkyviin.
- Valitse IAM-sivun vasemmasta reunasta Käyttäjätja napsauta sitten Lisää käyttäjiä -painiketta. Se avaa toisen sivun joidenkin tietojen täyttämiseksi.
- Aloita kirjoittamalla IAM-käyttäjän nimi ja napsauttamalla Seuraava painike alareunassa: Seuraavalla sivulla sinun on valittava IAM-käyttäjän käyttöoikeustasot. Toimi seuraavasti:
- Valitse ensin Liitä käytännöt suoraan vaihtoehto kohteesta Käyttöoikeusvaihtoehdot osio.
- Määritä seuraavaksi lupakäytäntö IAM-käyttäjällesi. Tämä määrittää, mitä IAM-käyttäjä voi tehdä ja mitä ei. Koska haluat Django-sovelluksesi lataavan ja lähettävän tiedostoja, sinun tulee antaa sille täysi pääsy S3-ämpäriin.
- Vuonna Käyttöoikeuskäytännöt -osiosta, sinun tulee etsiä S3FullAccess ja valitse vaihtoehto. Kun olet valmis, napsauta Seuraava -painiketta.
- Tarkista seuraavaksi IAM-käyttäjän käytännöt ja napsauta Luo käyttäjä -painiketta luodaksesi IAM-käyttäjäsi.
Vaihe 4: Luo pääsyavain IAM-käyttäjällesi
AWS: ssä pääsyavain viittaa valtuustietoihin, joiden avulla voit todentaa ja käyttää AWS-resursseja turvallisesti ohjelmallisesti. Django-projektisi on annettava nämä kirjautumistiedot, jotta voit käyttää S3-säilöäsi.
Seuraavat vaiheet auttavat sinua luomaan pääsyavaimen projektillesi.
- Kun olet luonut IAM-käyttäjäsi, saat hälytysviestin, joka kehottaa sinua tarkastelemaan käyttäjää. Vaihtoehtoisesti voit tarkastella käyttäjää napsauttamalla Käyttäjänimi.
- Valitse seuraavaksi Turvallisuustiedot -välilehteä, vieritä alas löytääksesi Pääsynäppäimet -osio ja valitse Luo pääsyavain.
- Sinun on valittava käyttöoikeustapaus, jotta AWS voi suositella vaihtoehtoista vaihtoehtoa tarvittaessa. Se ei vaikuta pääsyavaimeesi. Voit vapaasti valita vaihtoehdon, kuten Kolmannen osapuolen palvelu tai Paikallinen koodi ja hyväksy varoitus, joka tulee näkyviin. Kun olet valmis, napsauta Seuraava -painiketta.
- Kirjoita seuraavalla sivulla pääsyavaimesi kuvaustunniste ja napsauta Luo pääsyavain -painiketta.
- Kun olet luonut pääsyavaimesi, voit joko kopioida kirjautumistietosi tai ladata ne CSV-tiedostona. Joka tapauksessa varmista, että nämä tiedot ovat turvassa.
Vaihe 5: Määritä Django-projektisi S3 Bucketille
Jos haluat käyttää S3-ämpäriäsi Django-projektin kanssa, asenna nämä paketit:
- django-varastot: Tämä paketti auttaa sinua määrittämään tallennustaustajärjestelmän tiedostoillesi.
- boto3: Tämä paketti on AWS Software Development Kit (SDK) Python-projektisi vuorovaikutuksessa AWS: n kanssa.
Voit asentaa nämä paketit omaan Python-virtuaaliympäristö Pythonin Pip-paketinhallinnan kanssa kirjoittamalla tämä komento päätteeseesi:
pip install django-storages boto3
Kun olet asentanut nämä paketit onnistuneesti, avaa settings.py tiedosto ja lisää boto3 asennettuihin sovelluksiin.
Viimeisenä tehtävänä on määrittää Django-projektisi käyttämään AWS S3 -ämpäri. Tässä on yleinen käytettävä kokoonpano:
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'
Liitä yllä oleva määritys omaan settings.py tiedosto ja korvaa arvot vastaavasti. Vaihda omasi AWS_ACCESS_KEY_ID ja AWS_SECRET_ACCESS_KEY käyttöavaimella ja salaisella pääsyavaimella, jotka olet kopioinut tai lataanut aiemmin. Kannattaa myös vaihtaa AWS_STORAGE_BUCKET_NAME ja AWS_S3_REGION_NAME S3-alueesi ja -alueen nimiin.
Saat alueen nimen navigoimalla S3-säihösi ja kopioimalla viimeiset arvot AWS-alue sarakkeessa.
Vaihe 6: Testaa AWS-kokoonpanosi
Kun yllä olevat vaiheet on suoritettu, sinun pitäisi olla valmis testaamaan sovelluksesi lataamalla tiedostoja. Seuraavat koodiesimerkit lataavat tiedostot suoraan hallintapaneelista, mutta voit ladata omasi toisesta paikasta.
Kontekstia varten sinulla voi olla malli, joka näyttää tältä:
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
Varmista, että suoritat tarvittavat toiminnot, kuten siirrot, sen lisäämisen hallintapaneeliin, näkymän luomisen ja muut projektillesi tarpeelliset asiat. Varmista, että harjoittelet Djangon MVT-periaate.
Kun olet valmis, siirry hallintapaneeliisi tai mihin tahansa tiedoston lataamista varten luotuun lomakkeeseen ja lähetä kuvatiedosto.
Siirry pääsivustollesi ja varmista, että kuva on siellä. Jos on, napsauta kuvaa hiiren kakkospainikkeella ja valitse Avaa kuva uudessa välilehdessä vaihtoehto. Uudella kuvan sisältävällä välilehdellä huomaat, että osoitepalkki viittaa aiemmin luomaasi S3-säilöyn:
Toinen tapa varmistaa, että määritykset toimivat, on siirtyä AWS-konsolin ämpäriisi. Löydät kuvasi sieltä:
Vaihe 7: Kerää staattiset tiedostot S3-ämpäriisi
Tähän mennessä olet pystynyt lataamaan mediatiedostoja S3-säihösi; nyt sinun on ladattava staattiset tiedostosi.
Voit tehdä tämän lisäämällä nämä kokoonpanot omaan settings.py tiedosto:
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_LOCATION = 'static'
Sen jälkeen avaa omasi Command Line Interface (CLI) ja suorita tämä komento:
python manage.py collectstatic --noinput
Varmista, että kaikki toimii, avaamalla S3-ämpäri AWS-konsolissa. Näet kansion nimeltä staattinen.
Käytä AWS S3 -kauhaa paljon enemmän
AWS S3 -kauhojen mahdollisuudet ovat valtavat! Sinun tulisi tutustua siihen ja opetella käyttämään S3:a muihin tarkoituksiin, kuten staattisen verkkosovelluksen isännöintiin.
Kun osaat käyttää S3-kauhoja oikein, säästät paljon aikaa ja voit rakentaa paremman tuotteen tai ratkaisun. Mutta sinun tulee myös olla tietoinen siitä, että S3 ei välttämättä sovellu jokaiseen tapaukseen, joten harkitse projektisi vaatimuksia ennen sen käyttöä.