Viimastel aastatel on veebipõhine salvestusruum muutunud peavooluks, pakkudes väga hästi skaleeritavat arhitektuuri, täiustatud turvalisust ja laialdast juurdepääsu andmetele. Üks populaarsemaid salvestusteenuseid on Amazoni Simple Storage Service, tuntud ka kui S3.
Amazon S3 on äärmiselt võimas teenus, mis on Amazon Web Services'i keskmes. Kuid väljaspool tootmiskeskkonda võib S3-ga töötamine olla keeruline. See hõlmab juurdepääsu võtmete edasiandmist, kasutajakontode loomist ja usaldusväärse võrguühenduse säilitamist - rääkimata sellest, et see maksab raha. õnneks on olemas tööriist, mis aitab seda probleemi lahendada. FakeS3 on kerge server, mis simuleerib tõelise S3-i käitumist. See vastab samadele kõnedele, millele Amazon S3 vastab, ja salvestab üleslaetud failid teie kohalikku failisüsteemi - Amazon'i teenusele ei tehta ühtegi päringut. Kuigi gem ei toeta kõiki S3-i käske, on rakendatud API piisav enamiku rakenduste kasutusjuhtumite jaoks.
Selles artiklis tutvustan lähenemist, kuidas integreerida AWS ja FakeS3 koos Paperclipiga - populaarne faili manuste raamatukogu Active Record'i jaoks. Paperclip ja S3 koos pakuvad tõhusat failihoiusüsteemi, mis ühendab kasulikke Paperclip'i põhifunktsioone (nagu valideerimiste haldamine ja pilditransformatsioonid) veebipõhise salvestamise eelistega. Kuigi nende tööriistade konfigureerimine ei ole ilmselge ja nõuab üksikasjalikku dokumentatsiooni kaevamist ning paljude pärli-spetsiifiliste probleemide lahendamist, tasub kulutada veidi aega, et muuta arendus kiiremaks ja tõhusamaks.
Mis on meie eesmärk?
Kirjeldatud vahendite integreerimine nõuab kolme etappi:
FakeS3 gemi poolt pakutava S3 võltsserveri käivitamine taustal.
AWS S3 kliendi konfigureerimine, et delegeerida kõik päringud käivitatud võltsserverile.
Paperclip'i konfigureerimine, et kasutada võltsitud S3-päätepunkti ehitatud ressursi URL-ides.
Veenduge, et installite aws-sdk versiooni 1.6. Paperclip, mis kasutab SKD-d Amazoni teenuse salvestusruumi haldamiseks, ei tööta hästi selle pärli kõrgemate versioonidega. Selle põhjuseks on olulised muudatused SDK API-s, mis toodi versiooniga 2.0.
Pidage ka meeles, et FakeS3 peamine eesmärk on minimeerida sõltuvusi tööajast. See on pigem arendusvahend, et testida S3-kõnesid oma kood pigem kui tootmisserver, mis soovib dubleerida S3-funktsioone. Seetõttu peaksite lisama gemi ainult arendus- ja testrühma.
AWS konfiguratsioon
AWS SDK pakub spetsiaalset abimeetodit, mis vastutab konfiguratsiooni laadimise eest. See laadib vaikimisi konfiguratsiooni aadressilt config/aws.yml, ekstraheerib selle parameetrid praeguse keskkonna jaoks ja edastab need AWS kliendile. Kõigepealt kutsuge järgmist meetodit initsialiseerijas:
access_key_id, secret_access_key - AWSi kliendi volitused, mis on vajalikud teie Amazoni kontole juurdepääsu saamiseks. Neid ignoreeritakse võlts S3 server seega kohandatud väärtused liivakasti keskkondades.
s3_endpoint, s3_port- S3 lõpp-punkti spetsifikatsioon. Kasutame neid parameetreid, et asendada reaalne S3-päätepunkt võltsitud lõpp-punktiga, mille käivitab pärl FakeS3 - kõik päringud Amazoni teenusele delegeeritakse nüüd kohalikule võltsserverile.
s3_force_path_style - S3 aktsepteerib kahte stiili, et lisada ämbri nimi URL-i. Saate valida, kas ämbri nimi paigutatakse domeeni stiilis (bucket.s3.amazonaws.com) või tee stiilis (s3.amazonaws.com/bucket). Selleks, et hoida asjad lihtsad ja vältida ämbri alamdomeeni ja tagasipöördumise aadressi kaardistamisega seotud lisakonfiguratsiooni, eelistan arenduskeskkonnas domeeni stiili asemel tee-stiili.
use_ssl - sunnib AWS SDK-d kasutama HTTPS-i vanilla HTTP asemel. Meil on vaja see valik välja lülitada, sest FakeS3 gem ei toeta HTTPS päringuid, mida AWS klient vaikimisi täidab.
Seekord on aga tegemist tõelise S3-teenusega, mistõttu peate esitama autentsed AWS-i volitused.
Võimalike turvariskide tõttu on hea tava hoida salajased väärtused, nagu näiteks juurdepääsu võtmed, versioonihaldussüsteemist eemal, näiteks kasutades keskkonnamuutujaid. Me kasutame ERB-i, et süstida selle väärtused konfiguratsioonifaili.
Kirjaklambrite konfiguratsioon
Nüüd on aeg Paperclipiga silmitsi seista ja sundida seda juba konfigureeritud S3-kliendiga kenasti töötama. Paperclip'i konfigureerimise peamine eesmärk on saada salvestusruumi tee, mis leiab fakeserveri poolt majutatud ressursid:
ladustamine - määrab salvestuskandja (vaikimisi kohalik failisüsteem). Kuna me kasutame AWS S3-i, siis peame selle muutma järgmiselt :s3.
ämber - selle S3-ämbri nimi, kus teie faile hoitakse. Kui ämbrit ei ole olemas, püüab Paperclip selle luua.
url - seatud :s3_alias_url paneb Paperclip'i tegema S3 ämbri hostinimele aliase väärtusega, mis on määratud väärtusega :s3_host_alias parameeter.
s3_host_alias - vaikimisi S3-ämbri host'i alias. Pange tähele, et host, port ja ämbri nimi vastavad AWS-i kliendi konfiguratsioonile.
tee - muster võtmete jaoks, mille all failid salvestatakse ämbrisse. Võtmed peaksid olema korvi sees unikaalsed, nagu failinimed. Kuna S3 ei toeta katalooge, saate kasutada kataloogi / sümbol kataloogistruktuuride simuleerimiseks.
Sarnaselt AWS-i mandaatidele peetakse ka bucket'i nime salajaks väärtuseks, mida tuleks hoida väljaspool teie koodibaasi. Soovitan selle nime salvestada keskkonnamuutujasse.
Lõpuks ühendage konfiguratsioon Paperclip'i vaikimisi valikutesse initsialiseerijas:
Nii AWS-i kui ka Paperclip'i konfiguratsioonid sisaldavad viidet kohalikule S3 võltsserverile, mida eeldatavasti käivitatakse all localhost:10001. Enne arendustegevuses töötamist peaksite käivitama serveri järgmise käsuga (mida pakub FakeS3 gem):
fakes3 -r public/system -p 10001
Edastatud parameetrid on järgmised:
root -r - juurkataloog, mille alla üleslaaditud failid salvestatakse. Kaaluge selle väljajätmist VCS-st, kui te ei soovi, et teie repositooriumis hoitakse üleslaetud faile.
port -p - selle pordi number, millel kohalik server töötab.
Kui kasutate oma rakenduses Foremani protsesside haldamiseks, võib olla mugav lisada Procfile'ile järgmine kirje:
See aitab säästa aega, mis kulub fakeserveri käivitamisele iga kord, kui teil on vaja arendada mõningaid S3-ga seotud funktsioone.
Kokkuvõte
Oleme seadistanud AWS-i kliendi delegeerima kõik päringud kohalikule võltsserverile, seadistanud Paperclip'i kasutama võlts S3-päätepunkti ehitatud ressursi URL-ides ja käivitanud võlts S3 gemi poolt pakutava võltsserveri, mis salvestab kõik failid kohalikus failisüsteemis.
Selle tulemusel muutusime sõltumatuks internetiühendusest ja säästsime raha, muutes meie arendustegevuse kiiremaks ja usaldusväärsemaks.