Ugrás a főmenüre.
Web 2008.05.26. Amazon, Cloud computing, Hosting

Amazon S3 alapdolgok, praktikák és tapasztalatok

Előző három bejegyzésemben már ismertettem, hogy miért jó nekünk az S3, most nézzük át a "benne lévő" alapvető okosságokat. Objektumok, vödrök, elérés, saját domain név használata. Nem kisebbről, mint statikus fájlok de facto cloud computing megoldásáról van szó.

Objektumok

Az S3 nem fájlokat, hanem "objektumokat" tárol. Eltárolhatsz benne egy sztringet, nem kell szöveges fájlba tenned. Egy objektum mérete maximum 5 giga lehet. Minden objektum mellé metaadatokat is lehet tárolni.

Vödrök (buckets)

Az objektumokat "vödrökbe" rakod. Az S3-on nincs mappaszerkezet, csak annyi, hogy az objektumodat valamelyik vödörbe rakod. Gyakorlatilag a vödör egy olyan mappa, amibe nem lehet almappákat létrehozni.

Vannak olyan szoftverek, amik sima meghajtóként képesek az S3-at kezelni. Ők trükköznek, más szoftverekkel vagy egy sima S3 lekérdezéssel mást fogsz látni. Pl. a JungleDisk pontokkal jelzi egy fájl nevében a mappa-pozícióját. Az a lényeg, hogy ezeket más szoftverekkel nehéz lesz olvasni, egyedi megoldásokat használnak.

Fontos, hogy a vödrök neve az egész S3-on belül egyedi kell, hogy legyen. Ha már valaki létrehozta a "savanyucukor" nevű vödröt, te már nem fogod tudni!

Az objektumok elérése

Minden objektum eléréséhez meg kell adnod a nevét és a vödröt, ahová tartozik. A webről is elérheted az objektumodat, ehhez többféle URL séma van, ez a legegyszerűbb:

http://vödörneve.s3.amazonaws.com/objektumneve

Az objektum nevében lehet / jel is, ezért olyan dolgokat is lehet csinálni, mintha almappában lenne a fájlod, pl:

http://example.s3.amazonaws.com/dir1/dir2/file.txt.

Ekkor az objektumnév értelemszerűen: dir1/dir2/file.txt. A Twitter avatar képek is az S3-ról jönnek, például az enyém.

Itt a vödör neve "twitter_production", az objektumé pedig "profile_images/28182762/user_8472629_1155065370124.png".

Ebből látszik, hogy kutyaközönséges GET művelettel, böngészőből is elérhető egy objektum. Olyat is tud, hogy a letöltést megadott bájtnál kezdi vagy csak az első X bájtot küldi, a teljes HTTP 1.1 támogatott.

Műveletek

REST és SOAP API-k állnak rendelkezésre, én a REST API-hoz fél nap alatt írtam saját PHP class-t, nem nehéz ügy. Lehet sima HTTP POST-tal is feltölteni, HTML oldalról vagy közvetlenül Flash-ből!

Szinte minden API kérés HMAC-SHA1 szignóval van azonosítva, azaz a titkos kulcsoddal kell kódolni az ügyet.

Saját domain

Ha szép URL-eket vagy a saját domain-ed szeretnéd, használni, akkor azt így:

  1. Ezt szeretnénk csinálni: http://www.example.com/index.html.
  2. Készíteni kell egy "www.example.com" nevű vödröt és beledobni az index.html-t.
  3. Az example.com névszerverén be kell állítani egy CNAME szabályt, hogy www.example.com CNAME a www.example.com.s3.amazonaws.com-ra.

Jogok (ACL)

Vödrönként vagy objektumonként lehet szabályozni, hogy ki fér hozzájuk. Négyféle lehet:

  • private: csak te írod, olvasod
  • public-read: csak te írod, mindenki olvassa (ezt fogod leggyakrabban)
  • public-read-write: anonymous emberek írhatják-olvashatják
  • authenticated-read: csak regisztrált S3 felhasználók olvashatják, meghatározhatod, hogy ki

Anonymous ember: nem szignózza a kérést és nem küld AWS azonosítót sem.

Különleges kérések

Mivel a teljes HTTP támogatott, lehet HEAD kérést is tolni, ekkor minden infót megkapsz (metaadatot is), csak a bájtokat nem, hasznos.

COPY API: bétateszt alatt van a copy API (mondjuk hivatalosan a komplett Amazon béta...), amivel átnevezni vagy másolni lehet az objektumokat (vödröket nem). Sajnos itt van árazás is, de minimális a díj, egy PUT request árát fizeted (most épp 0.01 USD körül van).

Tapasztalataim

Magyarországról átlagosan béna a feltöltés, van ahol jó, van, ahol lassabb. A ping idők hihetetlenül rövidek, a feldolgozási idő is, az S3 nagyon gyorsan válaszol.

A JungleDisk nagyon lassan tölt fel (a sima feltöltés kábé ötödével), nem látok benne állítható korlátozást ezért nem értem.

Az amerikai (Media Temple) szerverem átlag 50mbit/s-al tölt fel rá...

Nagyobb állományok feltöltésénél néha elszáll a kapcsolat (mondjuk húszból egyszer), ilyenkor van, hogy háromszor is meg kell próbálni. Ha valamilyen szoftvert írsz rá, akkor ezt vedd figyelembe, a saját PHP osztályom is elmegy öt próbálkozásig (ritkán), csak utána jön vissza hibával (még sosem).

Konklúzió

Statikus állományok nagy tömegű tárolására és kiszolgálására az S3-nál nincs jobb. Nem kell saját statikus tartalomra dedikált szerverekkel, sávszéllel, adminisztrációval bajlódni. Csak fizetni. Az árazásról hamarosan írok egy rövidet, addig is tervezz okosan és csak bátran!

0 hozzászólás - Te lehetsz az első!

Új hozzászólás
A sortörések automatikusak. Csak az üzenet kitöltése kötelező, a többi mező opcionális. A megadott e-mail címet nem tesszük közzé. Engedélyezett HTML tagek: p, a, strong, em, blockquote, ul, ol, li, dl, dt, dd.

Legutolsó hozzászólások

DJ PLAYER Blue Edition: Gábor: Ja, és természetesen megy iPad-en is, hiszen _minden_ iOS app megy iPad-en.

DJ PLAYER Blue Edition: Gábor: Bug report-okat itt fogadunk: http://djplayer.net/page/bug_report_fixes

DJ PLAYER Blue Edition: hohand: Hello!A dj player mukodik iPad-on is?Tegnap feltettem, wifi-n athuztam ra zeneket,de amikor ranyomtam egy zeneszamra,error-t dobott es valami is!...

Uzsidoboz LED!: zo via Google Reader: vicces dolog, csak nem értem mire való

Uzsidoboz LED!: Gábor: @Benjamin Minek forogjanak? Egy falszínezőnek olyat nem kell tudnia, így is épp elég hatásosak.

iMect means internet, media and other cool things. iMect is a small company near lake Velence, Hungary. We’ve a big footer on every page where you can discover what we do and what happens with us.

Az iMect jelentése: internet, média és egyéb király dolgok. Egy kis cég vagyunk közel a Velencei-tóhoz. Minden oldalon van egy nagy lábléc, ahol felfedezheted, hogy mivel foglalkozunk.