Tomas Markauskas

Naudojame Amazon S3 statinių failų talpinimui internete

Vienastoks ir Karolis Pocius rašo apie jų paveiksliukų talpinimo ypatumus. Nutariau pasidalinti ir savo metodais. Įraše apie Amazon EC2 servisą užvakar buvau paminėjęs ir Amazon S3 tarnybą (Simple Storage Service) - begalinio dydžio statinių duomenų saugyklą. Tai galima įsivaizduoti kaip begalinį kietajį diską, kuris niekad nepasibaigs. Paslauga nėra nemokama, bet mokama tik už tai, kas išnaudojama, t.y. mokama už kiekvieną saugomą gigabaitą ir kiekvieną perduotą (download/upload) gigabaitą. Ir duomenų kiekis nėra apvalinamas, t.y. jeigu saugomi tik 100 megabaitų ir ne pilną mėnesį, o tik pvz. 10 dienų, tai ir kainą dalintume iš 30. Arba 3 gigabaitai 10 dienų laikomi kainuotų tiek pat, kiek ir vienas gigabaitas visą mėnesį. Todėl nors ir kaina nėra ypatingai maža, paslauga vistiek gana patraukli, nes mokama tik už tai, kas sunaudojama.

Kaip viskas veikia? Amazon S3 yra grynas webservisas, kuri kalba per REST ir SOAP. Kadangi REST veikia HTTP pagrindu, visus failus galima pasiekti tiesiog per naršyklę (jei failui suteiktos skaitymo teisės). Būtent tai ir yra visas S3 gėris.

S3 neturi tokios failų sistemos, kokią mes paprastai įsivaizduojame. Čia egzistuoja dviejų lygių hierarchija: kibiriukai (buckets) ir raktai (keys). Vartotojas gali susikurti kibiriuką (ar kelis) ir juose kurti raktus, kurie vienareikšmiškai identifikuoja mūsų objektus. Nieko giliau nėra. Katalogo kataloge ar pan. susikurti neįmanoma, tačiau norint emuliuoti katalogų srtuktūrą, galima raktuose naudoti ir '/' simbolį. Kelias susijusias nuotraukas todėl galima būtų saugoti daugmaž taip:

/mano-kibiriukas/atostogos/as-juroje.jpg
/mano-kibiriukas/atostogos/as-nuogas.jpg

Abu failai saugomi tame pačiame kibiriuke "mano-kibiriukas" ir turi bendrą priešdėlį "atostogos/". Susidaro įspūdis, jog jie abu guli kataloge "atostogos". Tačiau taip iš tikro nėra. Raktams galima naudoti betkokius Unicode simbolius. Jų bendras ilgis negali viršyti 1024 baitų. Ganėtinai daug laisvės. Taip pat egzistuoja keletas API funkcijų, kuriomis galima netgi gauti raktų sąrašą, kurie prasideda tuo pačiu tekstu. Tai išnaudoja įvairūs įrankiai, kurie taip atvaizduoja virtualius katalogus.

Visi failai pasiekiami adresu:

http://s3.amazonaws.com/<kibiriukas>/<raktas>

Kam nepatinka ir turi technines galimybes, adresą galima suprastinti iki http://<kibiriukas>/<raktas>. Tereikia susigalvoti domeną, kurį norime nukreipti į S3, sukurti CNAME įrašą, rodantį į s3.amazonaws.com ir susikurti kibiriuką tokiu pat pavadinimu. Aš pvz. turiu susikūręs kibiriuką www2.tamole.net ir sukūręs DNS įrašą:

www2.tamole.net 1800 IN CNAME s3.amazonaws.com

Ir jau mano failai pasiekiami adresu www2.tamole.net, pvz. http://www2.tamole.net/20070416/plombir_small.jpg.

Vienintelis nelabai malonus dalykas - atidarius naršyklėje puslapį www2.tamole.net rodomas "access denied" pranešimas XML formatu, kuris nėra labai user-friendly... index.html failo kaip įprasta panaudoti neįmanoma. Taip yra todėl kad pateikus užklausa kibirėliui be rakto, servisas bando patiekti visų raktų tame kibirėlyje sąrašą, tačiau aš esu uždraudes priėjimą prie kibirėlio, tad rodomas klaidos pranešimas.

Dėl galimybės uždrausti prieigą prie objektų S3 galima naudoti ir atsarginėms kopijoms saugoti. Apie tai jau yra daug parašyta, pvz Jeremy Zawodny įrašas apie tai, kaip jam apsimoka naudoti S3 vietoj namų serverio bei sąrašėlis programų, kuriomis galima daryti atsargines kopijas į S3.

Kalbant apie įrankius darbui su S3, norėčiau paminėti puikų firefox extensioną, S3Fox, kuriuo labai paprasta įkelinėti failus į S3. Iki šiol aš tik jį nuotraukoms ir naudojau (atsarginėms kopijoms man labai patinka s3sync, kuris veikia labai panašiai į rsync).

Taip pat niekas nedraudžia pasirašyti įrankius ir patiems. Aš šiuo metu po truputį rašau PHP klasę, kurią galėčiau naudoti savo bloge automatiniam paveikslėlių įkėlimui. Kiek buvau radęs klasių, visos jos man kuom nors nepatikdavo, o Zend Framework proposal'as šiam reikalui miręs.

Wordpress vartotojai panašu, kad jau irgi turi įskiepį, kuriuo gali krauti failus į S3. Nenaudoju Wordpress, negaliu nieko pakomentuot...

Mano manymu S3 yra labai nebloga ir patikima alternatyva nemokamoms paveikslelių talpinimo tarnyboms. Nors S3 ir nėra nemokama, tačiau vidutiniam blogeriui kaina už paveikslėlių talpinimą neturėtų būti labai didelė. O taip pat nėra jokių apribojimų nei failo dydžiui (gigabaitas irgi ne riba), parsisiuntimų skaičiui ir t.t.

Pamąstymui dar du įrašai, kaip galima sutaupyti ir nesutaupyti vietoj nuosavos infrastrukturos naudojant S3 dideliems projektams.

Sukurta: 2007-10-18 18:05
Tagai: amazon s3, bloginimas, IT, webservisai
Komentarų: 0

Panašūs įrašai

Komentarai

Komentarų nėra. Būk pirmas!

Parašyk komentarą