
สำหรับวันนี้เราจะมาอยู่กับเรื่องที่สำคัญสำหรับการทำเว็บในฝั่ง Back-End คือเรื่องของการเก็บไฟล์รูปแบบต่าง ๆ ไม่ว่าจะเป็นไฟล์ภาพ วิดีโอ เสียง เอกสาร หรือไฟล์อื่น ๆ ไฟล์เหล่านี้ก็จะต้องมีที่เก็บ และด้วยในยุคนี้ที่ใคร ๆ ก็ใช้คลาวด์ ซึ่งวันนี้แอดจะพาไปดูอีกบริการที่ใช้ในการเก็บไฟล์ ที่มีผู้เรียน request มาว่าให้สอนตัวนี้หน่อย นั่นคือ S3 บริการเก็บไฟล์จาก AWS นั่นเอง เรามาดูว่า S3 คืออะไร? ใช้งานยังไง? มีอะไรที่มือใหม่อต้องรู้บ้าง ไปดูกันเลย 🚀
S3 คืออิหยัง?

S3 ย่อมาจาก Amazon Simple Storage Service ก็คือ S3 มาจากตัวย่อของชื่อเต็มที่ขึ้นต้นด้วย S สามตัวนี่แหละ ซึ่ง S3 เป็นบริการที่ใช้เก็บข้อมูล ไฟล์ต่าง ๆ บนคลาวด์และเราก็จะยังสามารถเรียกข้อมูลได้ง่าย ๆ ไม่ว่าจะเป็นไฟล์ขนาดเล็กหรือขนาดใหญ่ S3 ก็รับได้
มาเริ่มใช้งาน Amazon S3 กันเลย
ก่อนอื่นเราต้องมี Account ของ AWS ก่อนนะ สามารถ Sign Up ได้ที่เว็บนี้เลย https://portal.aws.amazon.com/billing/signup

ต่อมาตอนที่เราจะเอาข้อมูลไปเก็บไว้ใน Amazon S3 เราจะต้องสร้างที่เก็บข้อมูลบน S3 ก่อน ซึ่งที่ที่เราจะเอาข้อมูลไปเก็บเราจะเรียกมันว่า “bucket” นั่นเอง โดยเริ่มจากให้เราไปที่ Amazon S3 console https://console.aws.amazon.com/s3/ แล้วทำการคลิกที่ “Create bucket”

ต่อมาเราก็มาตั้งชื่อเจ้าถึงเก็บข้อมูล และเลือกว่าถังใบนี้จะถูกสร้างที่ภูมิภาคหรือ server ที่อยู่ที่ไหน เช่นของแอดเลือกเป็น “Asia Pacific (Osaka) ap-northeast-3” แต่หากเราเคยสร้างถึงใบอื่น ๆ อยู่แล้ว แล้วต้องการใช้ settings ที่มีอยู่สามารถเลือก Copy setting ได้เลย

ต่อมาก็จะเป็นส่วนในการ ควบคุมความเป็นเจ้าของข้อมูล เราสามารถเปิดหรือปิดได้ โดยถ้าเราเปิดอนุญาต ข้อมูลในถังก็จะสามารถเป็นของบัญชี AWS อื่น ๆ ได้ โดยการเข้าถึง bucket เราเนี่ยจะถูกกำหนดโดย ACL (ACL ย่อมาจาก Access Control List เป็นลิสต์ที่เอาไว้ควบคุมการเข้าถึง resource ต่าง ๆ)

หากเลื่อนมาอีกนิดจะเจอส่วน Block Public Access อันนี้แนะนำให้บล็อกทั้งหมดเลย ใช้สำหรับป้องกันไม่ให้ใครก็ได้เข้ามาเปิดดูข้อมูลในถังของเรา

ต่อมาจะเป็น Bucket Versioning เป็นเหมือนการทำ Version Coantrol แบบใน GitHub ที่เราคุ้นเคย เราสามารถเปิดการเก็บข้อมูลทุกเวอร์ชันไว้ ช่วยกู้คืนข้อมูลกรณีลบไปโดยไม่ตั้งใจ

แท็ก (Tags) อันนี้ใช้สำหรับติดตามค่าใช้จ่ายในการจัดเก็บข้อมูลและจัดกลุ่มถังเก็บข้อมูลเฉย ๆ

Default encryption จะเป็นส่วนที่ให้เราเลือกว่าเข้ารหัสข้อมูลที่เก็บไว้ในถังเก็บข้อมูลด้วยรูปแบบใด

เมื่อเสร็จแล้วเราก็ทำการกด Create Bucket จะได้หน้าเว็บแบบด้านล่างนี้มา และจะเห็น Bucket ของเราโผล่มาแล้ว

เราก็ลองจิ้มไปที่ชื่อของ Bucket ก็จะมีส่วนให้เราอัปโหลดไฟล์ขึ้นมาแล้วนั่นเอง

ต่อมาเราก็ลองกด Upload ระบบก็จะนำเราไปยังหน้าที่ให้เราอัปโหลดไฟล์หรือโฟลเดอร์ขึ้นมาได้แล้วนั่นเอง

หลังจากที่เราได้ทำการอัปโหลดก็จะเห็นได้ว่าไฟล์ของเราขึ้นไปอยู่บน S3 แล้ว

เมื่อเรากดเข้าไปในชื่อไฟล์ที่อัปโหลดก็จะเห็นรายละเอียดของไฟล์ใน S3 โดยหลัก ๆ แล้วให้โฟกัสที่ S3 URI และ Object URL โดย S3 URI จะประกอบด้วยชื่อ Bucket และ ชื่อ Object เหมาะสำหรับการระบุ Oject ที่เฉพาะเจาะจง เข้าถึงข้อมูลผ่านโปรแกรม หรือใช้เครื่องมือของ AWS

แต่ส่วนที่เป็น Object URL จะเป็น URL ที่ชี้ไปที่ Object นั่นตรง ๆ เลย เหมาะสำหรับการแชร์ลิงก์ดาวน์โหลด Object นั่นกับบุคคลอื่น โดยไม่ต้องให้พวกเขามีสิทธิ์เข้าถึงถังเก็บข้อมูล แต่ถ้าเราไม่ได้เปิดสิทธิ์ไว้ มันจะขึ้นแบบนี้

ให้เราเปิดจากปุ่ม Open แทน

เราก็จะสามารถเปิดไฟล์ได้แล้วนั่นเอง
