Práce s Amazon Simple Storage Service (S3) v Linuxu

Amazon Simple Storage Service (dále jen S3) je služba spadající do kategorie cloud, která nabízí velmi levné uskladnění vašich dat. Služba je sice cílena především na vývojáře webových aplikací, to ale neznamená, že ji nemůžeme použít i k zálohování osobních stanic a serverů, což bude obsahem tohoto článku.

Vytvoření Amazon účtu a pronajmutí S3 služby je bezplatné a trvá jen několik málo minut. Potřeba je pouze platební karta s povolenými internetovými platbami.

Jakmile máme S3 pronajmuté, je načase vytvořit takzvaný "bucket", tedy jakýsi kontejner, do kterého budeme moci nahrávat data. Těchto bucketů můžeme mít neomezeně mnoho. Při vytváření bucketu je třeba zvolit, kde má být bucket fyzicky umístěn. Na výběr máme USA, USA-západ (Kalifornie) a Evropu (Irsko).

Pro vytvoření bucketu bohužel Amazon přímo neposkytuje žádný nástroj. Naštěstí ale existuje velmi snadné řešení - rozšíření pro Firefox nazvané S3Fox. Po jeho instalaci budete požádání o zadání Access Key a Secret Key, obě tyto položky najdete ve svém Amazon účtu v sekci Security Credentials. Nový bucket se pak vytváří vpravo tlačítkem pro vytvoření složky, přičemž název bucketu musí být unikátní napříč celým S3.

Se samotnou službou S3 se pracuje pomocí SOAP a REST rozhraní, což může na první pohled vypadat jako dost velký problém. Nabízené ceny za překonání těchto potíží ale stojí. Projektů zabývajících se transformací rozhraní S3 do něčeho pro administrátory lépe použitelného (WebDAV, virtuální filesystém, FTP) existuje mnoho. Rozpoznat ale ty, které už dozrály do stabilního stavu, není vůbec lehké. My zde vyzkoušíme možnosti nástroje s3cmd, který je součástí projektu S3 tools a který je patrně jako jediný obsažen v repozitářích debianích distribucí.

Nástroj s3cmd

Jelikož je v repozitářích dost neaktuální verze nástroje, stáhneme si raději současnou verzi, rozbalíme archiv a nainstalujeme příkazem (musíme se nacházet v rozbalené složce):

python setup.py install

Nástroj pak vyvoláme příkazem s3cmd. Před prvním použitím je ale třeba zavolat ho s přepínačem --configure a zadat přihlašovací údaje. Jak nástroj pracuje se můžeme dozvědět z manuálových stránek (příkaz man s3cmd) nebo z webové dokumentace. Základní syntaxe je:

s3cmd (get|put|del) file s3://bucket/path

Osobně jsem si napsal jednoduchý shellový skript, který lokálně uložené archivy zálohy nahraje do S3 a lokální soubory smaže.

#!/bin/bash
s3cmd put /backup/* s3://mybucket/ && rm /backup/*

Časté problémy

Pokud nástroj při pokusu o nahrání dat na server zahlásí jakousi chybu týkající se času, znamená to, že je potřeba změnit čas našeho stroje na stejný jako má server S3. Pokud tedy například máme bucket v Irsku, musíme změnit časovou zónu našeho stroje na UTC(např. Londýnský čas). To provedeme příkazem:

dpkg-reconfigure tzdata

Volitelně můžeme také nainstalovat balík ntpdate, který se postará o automatickou synchronizaci času s NTP servery.

evaluation

comments

2010-01-04 23:46:27

Pisete ze nabizene ceny za prekonani uskali stoji... ale v porovnani s pronajatym serverem ci umisteni serveru kamkoli do serverovny vyjde mnohem levneji... alespon na prvni pohled.

replied by [2] Dundee
[2] Dundee
2010-01-05 12:41:23

#1 Karel Dytrych: Tak to nevím, jak to počítáte. Za připojení serveru na pátěř zaplatíte cca 1000,-Kč/měsíc. Za pronájem nějakého VPS pak třeba 400,-Kč/měsíc a máte tam jen pár GB místa.

Při použití Amazon S3 zaplatíte za uskladnění až 50TB pouhých $0.150 měsíčně. Veškeré přenosy do S3 jsou zatím zdarma, později se bude platit $0.1 za GB. Za přenosy ven z S3 se platí $0.170 za GB. Pak se ještě platí $0.01 za každých 1000/10000 požadavků (GET/POST/atd.).

Ať počítám, jak počítám, tak při použití S3 jako uložné místo pro zálohy mi to rozhodně vychází daleko levněji než pronajmutí celého serveru/připojení k páteři.

[3] Michal Illich
2010-01-05 16:55:49

#2 Dundee: Ehm, "až 50TB pouhých $0.150 měsíčně" - vypadlo vam tam, ze ta cena je za 1 GB.

replied by [4] Dundee
[4] Dundee
2010-01-05 18:57:28

#3 Michal Illich: Samozřejmě. Díky za opravu.

comments closed