Naučte se, jak nastavit úložiště souborů S3 pomocí tohoto podrobného průvodce.

Pokud vytváříte webovou aplikaci Django, je nezbytné efektivně zacházet se statickými prostředky a uživateli nahranými mediálními soubory.

Ve vývojovém prostředí spravuje tyto soubory Django. Ve výrobě však budete chtít prozkoumat další možnosti. Vaše uživatelská základna se může výrazně rozrůst a možná budete mít co do činění s mnohem většími soubory, jako jsou audio a video.

Kbelík Amazon Web Services (AWS) Simple Storage Service (S3) je jednou z alternativ pro hostování statických a mediálních souborů. Integrací S3 s Django můžete ze svého serveru zbavit zátěž správy souborů, snížit zátěž a zajistit rychlejší a spolehlivější doručování prostředků.

Krok 1: Vytvořte si účet AWS

Pokud nemáte účet AWS, přejděte na stránky AWSa vytvořte si nový účet.

Nové účty AWS mají každý měsíc po dobu jednoho roku bezplatný přístup k 5 GB standardního úložiště S3.

Krok 2: Vytvořte S3 Bucket pro váš projekt

  1. Po vytvoření účtu AWS se přihlaste a vyhledejte S3 ve vyhledávacím poli nahoře a poté vyberte první možnost.
  2. Po výběru první možnosti se zobrazí nová stránka. Klikněte na Vytvořte kbelík knoflík:
  3. Dále zadejte název pro svůj kbelík S3. Většinu konfigurace můžete ponechat jako výchozí.
  4. Přejděte dolů na Blokovat nastavení veřejného přístupu pro tento segment sekce, zrušte zaškrtnutí Zablokujte veškerý veřejný přístup nastavení a potvrďte varování, které se zobrazí.
  5. Po dokončení klikněte na Vytvořte kbelík knoflík. Přesměruje vás na stránku, která zobrazuje seznam segmentů S3, které jste vytvořili.

Krok 3: Vytvořte uživatele IAM na AWS

AWS poskytuje službu s názvem IAM (Identity and Access Management). To vám umožní vytvořit samostatný účet pro konkrétní osobu nebo aplikaci, která potřebuje interakci se službami AWS.

Uživatelům IAM můžete přidělit různé úrovně oprávnění, které představují jednotlivce nebo aplikace, které komunikují se službami AWS, které jste vytvořili. S uživateli IAM můžete zajistit, že každý uživatel bude mít přístup pouze ke zdrojům, které potřebuje, a nic víc.

Z bezpečnostních důvodů byste měli pro svůj projekt Django vytvořit uživatele IAM, který bude komunikovat s vaším bucketem S3. Chcete-li vytvořit uživatele IAM na AWS, postupujte takto:

  1. Do vyhledávacího pole zadejte JSEM a vyberte první možnost. Objeví se nová stránka.
  2. Na levé straně stránky IAM vyberte Uživateléa poté pokračujte kliknutím na Přidat uživatele knoflík. Otevře se další stránka pro vyplnění některých informací.
  3. Začněte zadáním jména uživatele IAM a kliknutím na další tlačítko dole: Na další stránce musíte vybrat úrovně oprávnění pro uživatele IAM. Následuj tyto kroky:
    1. Nejprve vyberte Zásady připojte přímo možnost z Možnosti oprávnění sekce.
    2. Dále definujte zásady oprávnění pro uživatele IAM. To určí, co uživatel IAM může a co nemůže dělat. Vzhledem k tomu, že chcete, aby vaše aplikace Django stahovala a nahrávala soubory, měli byste jí dát plný přístup k bucketu S3.
    3. V Zásady oprávnění sekce, měli byste hledat S3FullAccess a vyberte možnost. Po dokončení klikněte na další knoflík.
  4. Dále si přečtěte zásady pro uživatele IAM a klikněte na Vytvořit uživatele k vytvoření uživatele IAM.

Krok 4: Vytvořte přístupový klíč pro uživatele IAM

V AWS se přístupový klíč vztahuje k přihlašovacím údajům, které můžete použít k ověření a bezpečnému přístupu k prostředkům AWS programově. Váš projekt Django musí poskytnout tyto přihlašovací údaje pro přístup k vašemu S3 bucketu.

Následující kroky vám pomohou vygenerovat přístupový klíč pro váš projekt.

  1. Po vytvoření uživatele IAM se zobrazí výstražná zpráva, která vás vyzve k zobrazení uživatele. Alternativně můžete uživatele zobrazit kliknutím na Uživatelské jméno.
  2. Dále vyberte Bezpečnostní pověření přejděte dolů a vyhledejte Přístupové klíče sekce a vyberte Vytvořit přístupový klíč.
  3. Budete muset vybrat případ použití pro svůj přístup, aby vám AWS mohla v případě potřeby doporučit alternativní možnost. Nemá to vliv na váš přístupový klíč. Neváhejte a vyberte možnost, např Služba třetí strany nebo Místní kód a potvrďte varování, které se objeví. Po dokončení klikněte na další knoflík.
  4. Na další stránce zadejte popisnou značku pro váš přístupový klíč a klikněte na Vytvořit přístupový klíč knoflík.
  5. Po vytvoření přístupového klíče můžete své přihlašovací údaje buď zkopírovat, nebo si je stáhnout jako soubor CSV. V každém případě tato data uchovávejte v bezpečí.

Krok 5: Nakonfigurujte svůj projekt Django pro S3 Bucket

Chcete-li použít svůj kbelík S3 s projektem Django, nainstalujte tyto balíčky:

  • úložiště django: Tento balíček vám pomůže definovat backend úložiště pro vaše soubory.
  • boto3: Tento balíček je AWS Software Development Kit (SDK) pomoci vašemu projektu Python komunikovat s AWS.

Tyto balíčky můžete nainstalovat do svého Virtuální prostředí Python pomocí správce balíčků Pip Pythonu zadáním tohoto příkazu do terminálu:

pip install django-storages boto3

Jakmile úspěšně nainstalujete tyto balíčky, otevřete svůj settings.py zařadit a přidat boto3 k nainstalovaným aplikacím.

Poslední věcí, kterou musíte udělat, je nakonfigurovat svůj projekt Django tak, aby používal kbelík AWS S3. Zde je obecná konfigurace k použití:

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'

Vložte výše uvedenou konfiguraci do svého settings.py soubor a odpovídajícím způsobem nahraďte hodnoty. Vyměňte svůj AWS_ACCESS_KEY_ID a AWS_SECRET_ACCESS_KEY s přístupovým klíčem a tajným přístupovým klíčem, které jste dříve zkopírovali nebo stáhli. Měli byste také změnit AWS_STORAGE_BUCKET_NAME a AWS_S3_REGION_NAME na názvy vašeho segmentu S3 a regionu.

Název oblasti můžete získat tak, že přejdete do segmentu S3 a zkopírujete poslední hodnoty z Oblast AWS sloupec.

Krok 6: Otestujte konfiguraci AWS

Po dokončení výše uvedených kroků byste měli být připraveni otestovat aplikaci nahráním souborů. Následující ukázky kódu nahrají soubory přímo z panelu administrátora, ale ty své můžete nahrát z jiného místa.

Pro kontext můžete mít model, který vypadá takto:

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

Ujistěte se, že jste provedli nezbytné operace, jako jsou migrace, přidání na panel správce, vytvoření pohledu a další věci nezbytné pro váš projekt. Ujistěte se, že cvičíte Djangoův princip MVT.

Až budete hotovi, přejděte do svého administrátorského panelu nebo jakéhokoli formuláře, který jste vytvořili pro nahrání souboru, a nahrajte soubor obrázku.

Přejděte na svůj hlavní web a potvrďte, že tam obrázek je. Pokud ano, klikněte pravým tlačítkem na obrázek a vyberte Otevřít obrázek na nové kartě volba. Na nové kartě obsahující obrázek si všimnete, že adresní řádek odkazuje na segment S3, který jste vytvořili dříve:

Dalším způsobem, jak potvrdit, že vaše konfigurace funguje, je přejít do vašeho segmentu na konzole AWS. Najdete tam svůj obrázek:

Krok 7: Sbírejte statické soubory do vašeho S3 Bucketu

Doposud jste mohli nahrávat mediální soubory do vašeho bucketu S3; nyní musíte nahrát své statické soubory.

Chcete-li to provést, přidejte tyto konfigurace do svého settings.py soubor:

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

Poté otevřete svůj Rozhraní příkazového řádku (CLI) a spusťte tento příkaz:

python manage.py collectstatic --noinput

Chcete-li potvrdit, že vše funguje, otevřete svůj kbelík S3 v konzole AWS. Uvidíte složku s názvem statický.

Použijte AWS S3 Bucket pro mnohem více

Možnosti lopatek AWS S3 jsou obrovské! Měli byste se s ním seznámit a naučit se používat S3 pro jiné účely, jako je hostování statické webové aplikace.

Vědět, jak správně používat kbelíky S3, vám ušetří spoustu času a pomůže vám vytvořit lepší produkt nebo řešení. Měli byste si však také uvědomit, že S3 nemusí být vhodný pro každý případ, takže před použitím zvažte požadavky svého projektu.