life, coding, and stuff

13 December 2015

Testing Amazon S3 secara lokal menggunakan fakes3


Amazon S3 (Simple Storage Service) adalah salah satu solusi penyimpana data cloud populer yang ditawarkan oleh Amazon. S3 memperbolehkan kita menyimpan data sesuka kita, dengan struktur yang kita kehendaki. Kita bisa menyimpan data kita baik secara privat, maupun dengan siapapun (menggunakan web browser atau BitTorrent client). Amazon bertindak sebagai host untuk penyimpanan dan bandwith, dan meminta biaya per gigabyte sebagai gantinya.

Ada dua kegunaan utama S3, yaitu:


Backup server
Kita menyimpan data lewat S3 dan tak mengjinkan siapapun untuk mengakses data tersebut. Tanpa membeli media penyimpanan kita sendiri, kita menyewa ruang penyimpanan tersebut dari amazon.

Data host
Kita menyimpan data di S3 dan mengijinkan akses untuk orang lain. Amazon melayani data kita melalui HTTP atau BitTorrent. Tanpa membayar ISP untuk bandwith, kita membayar ke Amazon sebagai gantinya. Tergantung biaya bandwith yang kita punya sekarang, hal ini dapat menghemat kita. Banyak dari startup sekarang ini yang menggunakan S3 untuk melakukan hosting data mereka.

Struktur S3

Ada dua konsep dalam S3: “bucket” dan “object”. Sebuah objek dengan metadata tertentu. Sebuah “bucket” adalah wadah atau tempat menyimpan object. Analogi untuk hubungan bucket dan object pada S3 adalah seperti filesytem dan file pada hard disk.
Sebuah bucket lebih mirip seperti filesystem jika dibandingkan dengan direktori pada hard disk. Sebuah direktori dapat dimasukkan ke dalam direktori lain, sedangkan bucket tidak dapat. Jika kita ingin sebuah struktur seperti direktori di dalam bucket kita, kita harus melakukan simulasi hal tersebut dengan memberi nama object kita seperti “directory/subdirectory/file-object”.

Bucket

Sebuah bucket punya memiiki sebuah informasi yang terkandung di dalamnya: nama. Nama sebuah bucket hanya dapat berisi huruf A-Z, a-z, 0-9, underscore(_), titik(.), dan strip(-).
Seperti yang telah saya katakan di atas, sebuah bucket tidak dapat berisi bucket lain. Hanya object. Setiap pengguna S3 dibatasi 100 bucket, dan setiap bucket tidak boleh sam dengan milik pengguna lain.

Object

Sebuah object memiliki empat bagian:
  • Sebuah referensi ke bucket yang menyimpannya
  • Data yang disimpan ke object tersebut (S3 menyebutnya “value”)
  • Sebuah nama (S3 menyebutnya “key”)
  • Satu set metadata berbentuk pair key-value yang berasosisasi dengan object tersebut.

Lebih lanjut mengenai S3 dapat dilihat di dokumentais resminya https://aws.amazon.com/documentation/s3/

fakes3

Meskipun Amazon menyediakan masa percobaan gratis 12 bulan untuk akun S3, namun kita harus memiliki kartu kredit untuk menggunakannya, di mana hal ini cukup sulit untuk beberapa orang. Jika kita hanya membutuhkan untuk keperluan testing atau belajar, kita cukup menggunaan fakes3.

fakes3 adalah sebuah server yang dapat merespon layaknya Amazon S3 asli. fakes3 sangat berguna untuk keperluan testing di dalam lingkungan sandbox tanpa melakukan request ke server Amazon asli.

Tujuan fakes3 adalah untuk meminimalkan dependensi dan sebagai development tool untuk mengetes S3 di dalam aplikasi yang kita buat.

fakes3 tidak menyediakan semua command set milik S3, tapi beberapa perintah dasar seperti get, put, list, copy, dan make bucket tersedia.

Persiapan

Dalam tutorial ini saya menggunakan:
Mac OSX 10.11
Ruby 2.0

Langkah-langkah

install gem untuk fakes3

gem install fakes3


kemudian untuk menjalankan kita tinggal menyediakan sebuah root dan port

sudo fakes3 -r /mnt/fales3_root -p 4567


Fake s3 mendukung banyak client untuk keperluan tes. Dalam tutorial ini saya mengunakan s3cmd.

Install s3cmd:

sudo easy_install pip
pip install boto
brew install s3cmd

 sebelum menjalankan s3cmd kita perlu menyiapkan file konfigurasinya terlebih dulu. Buat sebuah file, saya akan beri nama config.txt


kemudian kita perlu menyediakan DNS untuk simulasi bucket yang akan kita tes. Dalam contoh ini, saya akan buat sebuah bucket dengan nama ”tesbucket”

edit file host di /etc/hosts

sudo nano /etc/hosts


tambahkan:

127.0.0.1 testbucket.localhost


kemudian kita jalankan s3cmd, perintah untuk membuat bucket baru adalah ‘mb’ :

s3cmd -c config.txt mb s3://testbucket


sebuah bucket baru dengan nama testbucket dengan domain testbucket.localhost telah dibuat

Bucket 's3://testbucket/' created


Kita dapat melihat metadatanya dengan menggunakan web browser dengan alamat testbucket.localhost:4567











0 Comments:

Post a Comment

Popular Posts