The Codest
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Odvětví
    • Fintech a bankovnictví
    • E-commerce
    • Adtech
    • Healthtech
    • Výroba
    • Logistika
    • Automobilový průmysl
    • IOT
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
Šipka zpět ZPĚT
2016-09-30
Vývoj softwaru

BEZÚPLATNÝ VÝVOJ POMOCÍ AWS S3 A PAPERCLIP

Bartosz Zurkowski

V posledních několika letech se online úložiště stala hlavním proudem, který poskytuje vysoce škálovatelné architektury, lepší zabezpečení a širokou dostupnost dat. Jednou z nejoblíbenějších úložných služeb je služba Simple Storage Service společnosti Amazons, známá jako S3.

Amazon S3 je mimořádně výkonná služba, která je jádrem služby Amazon. Webové služby. Mimo produkční prostředí však může být práce s S3 náročná. Vyžaduje předávání přístupových klíčů, zajišťování uživatelských účtů a udržování spolehlivého síťového připojení - nemluvě o tom, že to stojí peníze.Naštěstí existuje nástroj, který tento problém pomáhá řešit. FakeS3 je odlehčený server, který simuluje chování skutečného S3. Reaguje na stejná volání, na jaká reaguje služba Amazon S3, a ukládá nahrané soubory do vašeho místního souborového systému - žádné požadavky na službu Amazonu. Přestože gem nepodporuje úplnou sadu příkazů S3, implementované rozhraní API je pro většinu případů použití aplikací dostačující.

V tomto článku představím přístup k integraci AWS a FakeS3 s Paperclip - populární knihovnou pro připojování souborů k Active Record. Paperclip a S3 dohromady poskytují efektivní systém ukládání souborů, který kombinuje užitečné základní funkce Paperclipu (jako je správa validací a transformace obrázků) s výhodami online úložiště. Ačkoli konfigurace těchto nástrojů není samozřejmá a vyžaduje prohrabání se podrobnou dokumentací i vyřešení mnoha problémů specifických pro drahokamy, stojí za to věnovat nějaký čas urychlení a zefektivnění vývoje.

Co je naším cílem?

Integrace popsaných nástrojů vyžaduje tři kroky:

  1. Spuštění falešného serveru S3 poskytovaného drahokamem FakeS3 na pozadí.
  2. Konfigurace klienta AWS S3 na delegování všech požadavků na spuštěný falešný server.
  3. Konfigurace nástroje Paperclip tak, aby používal falešný koncový bod S3 v adresách URL vytvořených prostředků.

Instalace

Začněme instalací potřebných drahokamů:

# Soubor drahokamů

gem "paperclip"
gem "aws-sdk", "~> 1.6"

gem "fakes3", group: [:development, :test]

Ujistěte se, že je nainstalována verze 1.6 aws-sdk. Paperclip, který používá SKD pro správu úložiště ve službě Amazonu, nefunguje dobře s vyššími verzemi tohoto drahokamu. Důvodem jsou významné změny v rozhraní API SDK, které přinesla verze 2.0.

Nezapomeňte také, že hlavním cílem FakeS3 je minimalizovat závislosti za běhu. Jedná se spíše o vývojový nástroj, který slouží k testování volání S3 ve vašem kód spíše než produkční server, který chce duplikovat funkce S3. Proto byste měli gem zahrnout pouze do vývojové a testovací skupiny.

Konfigurace AWS

AWS SDK poskytuje speciální pomocnou metodu pro načítání konfigurace. Ve výchozím nastavení načte konfiguraci z config/aws.yml, extrahovat jeho parametry pro aktuální prostředí a předat je klientovi AWS. Nejprve zavolejte následující metodu v inicializátoru:

# config/initializers/aws.rb

AWS::Rails.load_yaml_config

Nyní, když máme konfigurační soubor správně načtený, můžeme pokračovat v určování jeho obsahu:

# config/aws.yml

development: &development
    access_key_id: "abc"
    secret_access_key: "abc"
    s3_endpoint: "localhost"
    s3_port: 10001
    s3_force_path_style: true
    use_ssl: false

test: *development

Probereme všechny parametry jeden po druhém:

  • access_key_id, secret_access_key - Pověření klienta AWS potřebná k získání přístupu k účtu Amazon. Falešný server S3 je ignoruje, proto jsou v prostředí sandboxu používány vlastní hodnoty.
  • s3_endpoint, s3_port- Specifikace koncového bodu S3. Pomocí těchto parametrů nahradíme skutečný koncový bod S3 falešným koncovým bodem spuštěným pomocí gemu FakeS3 - všechny požadavky na službu Amazonu budou nyní delegovány na místní falešný server.
  • s3_force_path_style - S3 akceptuje dva styly uvedení názvu kbelíku v adrese URL. Můžete si vybrat, zda chcete název kbelíku umístit ve stylu domény (bucket.s3.amazonaws.com), nebo ve stylu cesty (s3.amazonaws.com/bucket). Abychom zachovali jednoduchost a vyhnuli se další konfiguraci spojené s mapováním subdomény kbelíku na zpětnou adresu, dávám ve vývojovém prostředí přednost path-style před domain-style.
  • use_ssl - vynucuje, aby AWS SDK používala protokol HTTPS namísto běžného protokolu HTTP. Tuto možnost musíme zakázat, protože klenot FakeS3 nepodporuje požadavky HTTPS, které klient AWS provádí ve výchozím nastavení.

Konfigurace pro produkční prostředí je poměrně jednoduchá:

# config/aws.yml

production: &production
    access_key_id:     
    secret_access_key: 

staging: *production

Tentokrát však máme co do činění se skutečnou službou S3, a proto je třeba zadat autentické pověření AWS.

Vzhledem k možným bezpečnostním rizikům je vhodné udržovat tajné hodnoty, jako jsou přístupové klíče, mimo systém správy verzí, např. pomocí proměnných prostředí. My použijeme ERB, abychom jeho hodnoty injektovali do konfiguračního souboru.

Konfigurace sponky

Nyní je čas postavit se Paperclipu čelem a přinutit ho, aby dobře spolupracoval s již nakonfigurovaným klientem S3. Hlavním cílem konfigurace Paperclipu je získat cestu k úložišti, která vyhledá prostředky hostované falešným serverem:

localhost:10001/:bucket_name/:path

Začněme opět vývojovým prostředím:

# config/paperclip.yml

development: &development
    úložiště: :s3
    bucket: "development"
    s3_host_name: "localhost"
    url: url: ":s3_alias_url"
    path: přípona: ":class/:attachment/:id_partition/:style/:filename.:extension"
    s3_host_alias: "localhost:10001/development"

test: *development
  • skladování - určuje nosič úložiště (ve výchozím nastavení místní souborový systém). Protože používáme AWS S3, musíme jej změnit na. :s3.
  • kbelík - název kyblíku S3, do kterého se budou ukládat soubory. Pokud kbelík neexistuje, Paperclip se jej pokusí vytvořit.
  • url - nastavit na :s3_alias_url způsobí, že Paperclip aliasuje název hostitele kyblíku S3 na hodnotu zadanou parametrem :s3_host_alias parametr.
  • s3_host_alias - alias pro výchozího hostitele kbelíku S3. Všimněte si, že umístění hostitele, portu a názvu kbelíku odpovídá konfiguraci klienta AWS.
  • cesta - vzor pro klíče, pod kterými budou soubory uloženy v kbelíku. Klíče by měly být v rámci kbelíku jedinečné, stejně jako názvy souborů. Vzhledem k tomu, že S3 nepodporuje adresáře, můžete použít tzv. / symbol pro simulaci adresářových struktur.
# config/paperclip.yml

production: &production
    storage: :s3
    bucket:  
    url:     ":s3_domain_url"
    path:    přípona: ":class/:attachment/:id_partition/:style/:filename.:extension"

staging: *produkce

Podobně jako pověření AWS je i název kbelíku považován za tajnou hodnotu, která by měla být uložena mimo vaši kódovou základnu. Doporučuji ukládat jeho název do proměnné prostředí.

Nakonec sloučte konfiguraci do výchozích možností aplikace Paperclip v inicializátoru:

# config/initializers/paperclip.rb

paperclip_defaults = Rails.application.config_for :paperclip
paperclip_defaults.symbolize_keys!

Paperclip::Attachment.default_options.merge! paperclip_defaults

Spuštění fakes3

Konfigurace AWS i Paperclip obsahují odkaz na místní falešný server S3, který má běžet pod systémem localhost:10001. Před prací ve vývoji byste měli spustit server pomocí následujícího příkazu (poskytovaného gemem FakeS3):

fakes3 -r public/system -p 10001

Předávané parametry jsou:

  • root -r - kořenový adresář, do kterého budou nahrané soubory uloženy. Pokud nechcete, aby se nahrané soubory ukládaly do úložiště, zvažte jeho vyloučení z VCS.
  • port -p - číslo portu, na kterém bude spuštěn místní server.

Používáte-li v aplikaci Foreman pro správu procesů, může být vhodné přidat do souboru Procfile následující položku:

# Procfile

fakes3: fakes3 -r ${FAKES3_STORAGE_PATH:-public/system} -p ${FAKES3_PORT:-10001}

Ušetříte tak čas ztracený při spouštění falešného serveru pokaždé, když budete potřebovat vyvinout nějaké funkce související s S3.

Závěr

Nakonfigurovali jsme klienta AWS tak, aby všechny požadavky delegoval na místní falešný server, nastavili jsme Paperclip tak, aby v adresách URL vytvořených prostředků používal falešný koncový bod S3, a spustili jsme falešný server poskytnutý gemem Fake S3, který ukládá všechny soubory do místního souborového systému.

Díky tomu jsme se stali nezávislými na internetovém připojení a ušetřili jsme peníze, takže náš vývoj byl rychlejší a spolehlivější.

Související články

Ilustrace zdravotnické aplikace pro chytré telefony s ikonou srdce a rostoucím zdravotním grafem, označená logem The Codest, která představuje digitální zdraví a řešení HealthTech.
Vývoj softwaru

Softwarové vybavení pro zdravotnictví: a případy použití

Nástroje, na které se dnes zdravotnické organizace spoléhají, se v ničem nepodobají papírovým kartám z doby před desítkami let. zdravotnický software dnes podporuje zdravotnické systémy, péči o pacienty a moderní poskytování zdravotní péče v klinických a...

NEJKRÁSNĚJŠÍ
Abstraktní ilustrace klesajícího sloupcového grafu se stoupající šipkou a zlatou mincí symbolizující efektivitu nákladů nebo úspory. V levém horním rohu se zobrazuje logo The Codest se sloganem "In Code We Trust" na světle šedém pozadí.
Vývoj softwaru

Jak rozšířit tým vývojářů bez ztráty kvality produktu

Zvětšujete svůj vývojový tým? Zjistěte, jak růst, aniž byste museli obětovat kvalitu produktu. Tento průvodce se zabývá příznaky, že je čas na škálování, strukturou týmu, najímáním zaměstnanců, vedením a nástroji - a také tím, jak může The Codest...

NEJKRÁSNĚJŠÍ
Vývoj softwaru

Vytváření webových aplikací odolných vůči budoucnosti: postřehy týmu odborníků The Codest

Zjistěte, jak společnost The Codest vyniká při vytváření škálovatelných, interaktivních webových aplikací pomocí nejmodernějších technologií, které poskytují bezproblémové uživatelské prostředí na všech platformách. Zjistěte, jak naše odborné znalosti podporují digitální transformaci a obchodní...

NEJKRÁSNĚJŠÍ
Vývoj softwaru

10 nejlepších lotyšských společností zabývajících se vývojem softwaru

V našem nejnovějším článku se dozvíte o nejlepších lotyšských společnostech zabývajících se vývojem softwaru a jejich inovativních řešeních. Zjistěte, jak mohou tito technologičtí lídři pomoci pozvednout vaše podnikání.

thecodest
Podniková a škálovací řešení

Základy vývoje softwaru v jazyce Java: A Guide to Outsourcing Successfully

Prozkoumejte tuto základní příručku o úspěšném vývoji softwaru outsourcing Java, abyste zvýšili efektivitu, získali přístup k odborným znalostem a dosáhli úspěchu projektu s The Codest.

thecodest

Přihlaste se k odběru naší znalostní databáze a získejte aktuální informace o odborných znalostech z oblasti IT.

    O nás

    The Codest - Mezinárodní společnost zabývající se vývojem softwaru s technologickými centry v Polsku.

    Spojené království - ústředí

    • Kancelář 303B, 182-184 High Street North E6 2JA
      Londýn, Anglie

    Polsko - Místní technologická centra

    • Kancelářský park Fabryczna, Aleja
      Pokoju 18, 31-564 Krakov
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšava, Polsko

      The Codest

    • Home
    • O nás
    • Služby
    • Case Studies
    • Vědět jak
    • Kariéra
    • Slovník

      Služby

    • To Advisory
    • Vývoj softwaru
    • Vývoj backendu
    • Vývoj frontendů
    • Staff Augmentation
    • Vývojáři backendu
    • Cloudoví inženýři
    • Datoví inženýři
    • Další
    • Inženýři QA

      Zdroje

    • Fakta a mýty o spolupráci s externím partnerem pro vývoj softwaru
    • Z USA do Evropy: Proč se americké startupy rozhodly přesídlit do Evropy?
    • Srovnání technických vývojových center v zahraničí: Tech Offshore Evropa (Polsko), ASEAN (Filipíny), Eurasie (Turecko)
    • Jaké jsou hlavní výzvy CTO a CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2026 by The Codest. Všechna práva vyhrazena.

    cs_CZCzech
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese es_ESSpanish nl_NLDutch etEstonian elGreek pt_PTPortuguese cs_CZCzech