- OpenStack Swift prakticky (1): object store pro vás
- OpenStack Swift prakticky (2): verzování objektů
- OpenStack Swift prakticky (3): omezení platnosti objektů
- OpenStack Swift prakticky (4): Dočasné URL
- OpenStack Swift prakticky (5): řízení přístupu
- OpenStack Swift prakticky (6): Object store jako statický web
Swift umožňuje u objektu nastavit časově omezenou platnost a ten se ve stanovené datum a čas stane nepřístupným. Můžete tak zabránit k přístupu k dokumentům, které už v daný okamžik nebudou aktuální (standardy, výkresy). Ve Swift implementaci může rovněž běžet čistící proces, který takto vypršené objekty fyzicky smaže a šetří tak místo v objektové storage. Často firmy dávají data na FTP nebo NFS server se záměrem dočasnosti, ale pak se na to zapomene a zbytečná data pak trvale zabírají místo. Pokud dopředu víte, že objekt má časové mezení, Swift vám jeho vypršení ohlídá sám.
Funguje to nastavením hodnot v metadatech a to jak při nahravání objektu přes API nebo modifikací metadat již nahraného objektu. Vyzkoušíme si to. Použitý atribut v metadatech se jmenuje X-Delete-At a obsahuje datum a čas v Unix formátu (tedy počet vteřin od 1.1.1970). Abychom nemuseli složitě počítat, použijeme variantu X-Delete-After, kam zapíšeme počet sekund, po které má být objekt platný.
tomas@labserver:~$ openstack container create docasne +---------------------------------------+-----------+------------------------------------+ | account | container | x-trans-id | +---------------------------------------+-----------+------------------------------------+ | AUTH_d20fb4c9c0d645b4962484390a3be701 | docasne | tx187397150c2a4e4e8eb77-00566e91f1 | +---------------------------------------+-----------+------------------------------------+ tomas@labserver:~$ openstack object create docasne mujsoubor.txt +---------------+-----------+----------------------------------+ | object | container | etag | +---------------+-----------+----------------------------------+ | mujsoubor.txt | docasne | 1d84480e95d3e31222e8d0e4a1f2da72 | +---------------+-----------+----------------------------------+
Máme tedy kontejner a objekt. Pojďme teď u něj nastavit expiraci 120 vteřin.
tomas@labserver:~$ swift post docasne mujsoubor.txt -H 'X-Delete-After: 120'
Zkuste objekt stáhnou – půjde to.
tomas@labserver:~$ openstack object save docasne mujsoubor.txt
Počkejte dvě minuty a zkuste to znovu. Objekt už není nalezen, není dostupný.
tomas@labserver:~$ openstack object save docasne mujsoubor.txt Not Found (HTTP 404)
Pokud si ale teď necháte vypsat obsah kontejneru, možná tam ještě chvilku bude. Nikdo už se k němu nedostane, ale fyzicky ještě není smazaný. Jedná se tedy o nedostupný, ale ještě nesmazaný objekt. Swift v pravidelných intervalech (obvykle kolem pěti minut) prochází svoje nody a neplatné objekty fyzicky odstraňuje.
tomas@labserver:~$ openstack object list docasne +---------------+ | Name | +---------------+ | mujsoubor.txt | +---------------+
Zkuste to později – už bude pryč.
tomas@labserver:~$ openstack object list docasne