ทำ S3 ใช้งานเองด้วย Minio server

ทำ S3 ใช้งานเองด้วย Minio server

S3 เป็นบริการ object storage ของ AWS ซึ่งชื่อเต็มๆ ของมันก็คือ Amazon Sample Storage Service (AWS S3) ประโยชน์ของมันก็คือไว้จัดเก็บ และเรียกดูไฟล์ต่างๆ ในรูปแบบของ object ซึ่งการเข้าถึงเรียกใช้ข้อมูลนั้นจะผ่านทาง HTTP หรือ HTTPS  และมีระบบรักษาความปลอดภัย encryption มาให้ด้วย

หากยังนึกไม่ออกว่าจะเอามาทำอะไร ให้นึกถึงเวลาเราเขียนเว็บไซต์ที่ต้องมีการอัพโหลดไฟล์ต่างๆ เข้ามาแล้วนำมาแสดงผลหน้าเว็บ และมือถือ ซึ่งปกติเราจะเก็บไว้ใน Project นั้นๆ เลย แต่คราวนี้ให้มาโยนเก็บไว้ใน Object strorage แทนเพื่อการแบ่งภาระของ server ออก และแยกการเก็บข้อมูลไฟล์กับตัว code ออกจากกัน

อีกประโยชน์ที่ผมใช้บ่อยๆ ก็คือหากโปรเจคไหนที่ต้องมีหลาย Environment เช่น Staging และ Production แน่นอนว่าไฟล์รูป หรือเอกสารต่างๆ ที่ใช้ในแต่ละ Environtment จะไม่เหมือนกัน เวลาโปรแกรมเมอร์ทดสอบอัพโหลดรูปก็จะเป็นพวกรูปตัวอย่าง แต่หากบน Production จะเป็นรูปที่ใช้งานจริงๆ ผมเอา Object storage นี่เละมาแยกกัน ระหว่างไฟล์ของ staging หรือ production

S3 diagram
S3 diagram

โดยหากใครอยากใช้งานก็สามารถเปิดใช้งานได้ง่ายๆ บน AWS S3 แต่หากใครต้องการสร้าง Object storage เองแบบผม :P ก็สามารถทำได้ง่ายโครตๆ ผ่าน minio ครับ

Minio is an open source object storage server with Amazon S3 compatible API. 
Build cloud-native applications portable across all major public and private clouds

Minio ก็คือ Object storage แบบ open source โดยตัวมันสามารถใข้งานร่วมกับ Amazon S3 ได้ และรองรับ SDK หลากหลายภาษา เช่น js, go, java เป็นต้น ที่ทำให้เราสามารถเขียนเพื่อมาเชื่อมได้ง่ายๆ อ่านเพิ่มเติมได้ที่ minio.io เลย

วิธีติดตั้ง Minio บน Ubuntu

เราสามารถติดตั้ง minio ได้ง่ายๆ ผ่าน docker 

$ docker pull minio/minio
$ docker run -p 9000:9000 minio/minio server /data

แต่จริงๆ เราควร mount volume ออกมาไว้กับ host ด้วย

$ docker run -p 9000:9000 -v $PWD/data:/data minio/minio server /data
  • เปลี่ยน $PWD/data เป็น path ที่ต้องการได้

หรือโหลด binary มาเรียกใช้งานเลยก็ได้

$ wget https://dl.minio.io/server/minio/release/linux-amd64/minio
$ chmod +x minio
  • โหลดไฟล์ minio มา
  • เปลี่ยนสิทธิ์ให้สามารถ execute ได้

เปิดใช้งานด้วยคำสั่ง

$ ./minio server /data &
  • เป็นการเรียก start minio ให้เก็บข้อมูลใน /data

หากสำเร็จจะขึ้นดังรูป

minio started
หลังจาก start minio แล้ว

สามารถเข้าใช้งานได้ผ่านเว็บบราวเซอร์ได้เลยผ่าน ip และ port 9000 เช่น http://192.168.1.1:9000 แล้วจากนั้นก็กรอก AccessKey กับ SecretKey ที่ได้มา

minio browser
Minio web interface

ส่วนรายละเอียดการเขียนโปรแกรมเพื่อเชื่อมต่อเข้ามา สามารถดูได้ที่ https://docs.minio.io/docs/javascript-client-quickstart-guide คราวหน้าผมจะมาสอนการติดตั้ง ssl ให้กับ minio นะครับ

Happy coding :p

1

Add new comment

This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Sat, 10/14/2017 - 17:13

เก่งจัง