หลังจากที่ทำความเข้าใจระบบ EC2 และเรียนรู้วิธีการสร้าง VM instance ไปแล้ว ทั้ง Windows และ Linux VM คราวนี้เรามาทำความรู้จักกับระบบ storage บนระบบ Cloud ของ Amazon AWS กันบ้าง
การทำงานบนระบบ Cloud ก็เหมือนกับการทำงานบนระบบคอมพิวเตอร์ปกติ ที่เราเคยใช้มาแต่ไหนแต่ไร นั้่นคือ จะต้องประกอบด้วยเซิร์ฟเวอร์ซึ่งก็คือ EC2 instance และพื้นที่ในการจัดเก็บข้อมูลหรือ storage นั่นเอง บนระบบของ AWS นั้นมีระบบ storage ให้เราเลือกใช้งานได้หลายอย่าง ได้แก่
เลือก Add Files แล้วทำการเลือกไฟล์ข้อมูลที่ต้องการเพิ่ม
- ในที่นี้เราจะเพิ่มไฟล์ ชื่อ train.jpg
ให้กดที่ Properties ของไฟล์ train.jpg (ด้านขวามือ) ปกติ เมื่อมีการเซฟข้อมูลไปเก็บบนระบบ S3
ข้อมูลนั้นจะถูกกำหนดสิทธิเป็น Private ซึ่งผู้มีสิทธิเข้าถึงได้ คือเจ้าของ (owner) เท่านั้น
สังเกตที่ Link จะเป็นรูปกุญแจ
การทำงานบนระบบ Cloud ก็เหมือนกับการทำงานบนระบบคอมพิวเตอร์ปกติ ที่เราเคยใช้มาแต่ไหนแต่ไร นั้่นคือ จะต้องประกอบด้วยเซิร์ฟเวอร์ซึ่งก็คือ EC2 instance และพื้นที่ในการจัดเก็บข้อมูลหรือ storage นั่นเอง บนระบบของ AWS นั้นมีระบบ storage ให้เราเลือกใช้งานได้หลายอย่าง ได้แก่
- ระบบ Block Storage หรือ Amazon Elastic Block Storage (Amazon EBS) เป็นระบบฮาร์ดดิสแบบดั้งเดิมที่เรานำไปเชื่อมต่อกับเซิร์ฟเวอร์เพื่อใช้ในการจัดเก็บข้อมล ซึ่งบางคนอาจจะมองว่าเป็นพื้นที่ที่อยู่ในระบบ SAN ก็ได้ ระบบ EBS ของ Amazon มีให้เลือกทั้งชนิดที่เป็นดิสค์แบบจานแม่เหล็กและแบบ SSD โดยมีค่าใช้จ่ายแตกต่างกันตามชนิดของดิสค์ที่เลือก
- ระบบ Object Storage หรือที่เรียกว่า Amazon Simple Storage Service (Amazon S3) เป็นระบบ storage ที่มีการเรียกใช้งานโดยผ่านทาง HTTP protocol โดยระบบนี้จะมีความสามารถในการขยาย (highly scalable) และมีความคงทน (highly durable) ในระดับ 99.999999999 เปอร์เซ็นต์ หรือที่เรียกว่า Eleven Nine ซึ่งในบล็อคนี้ เราจะพูดถึง Amazon S3 เป็นหลัก
- ระบบ File Share หรือ Amazon Elastic File System (Amazon EFS) ปัจจุบันยังเป็น Preview verion อยู่ เป็นระบบไฟล์แชร์สำหรับ EC2 instance ต่าง ๆ สามารถเข้ามาแชร์และใช้ข้อมูลร่วมกัน ระบบนี้จะทำงานผ่าน NFSv4 protocol
- ระบบ Archive Storage หรือ Amazon Glacier เป็นระบบ low-cost storage ที่ทำงานเหมือนกับระบบ Amazon S3 แต่ใช้ disk ขนาดใหญ่กว่าในการเก็บข้อมูล เหมาะสำหรับใช้เก็บข้อมูลที่ไม่ต้องการความเร็วมากนัก แต่ต้องการเก็บไว้อ้างอิงเป็นระยะเวลานานโดยมีค่าใช้จ่ายต่ำ ทาง Amazon จึงได้ออกแบบ Glacier มาเพื่อจุดประสงค์นี้โดยตรง อย่างไรก็ตาม ระยะเวลาในการเข้าถึงข้อมูลจะช้ากว่า storage แบบอื่น
ทำความรู้จักกับระบบ Storage บน AWS ไปแล้ว คราวนี้ขอกลับมาเน้นที่ Amazon S3 ครับ
Amazon S3 คือ ระบบ Object Storage ซึ่งในการเข้าถึงข้อมูลจะใช้คอนเซ็ปต์ของ Bucket (หรือพื้นที่จัดเก็บ) และตัว Object ซึ่งก็คือ ตัวไฟล์ข้อมูลนั้่นเอง โดยแต่ละ object หรือแต่ละไฟล์จะมีขนาดใหญ่สูงสุดได้ถึง 5 TB มีระบบรักษาความปลอดภัยและระบบ encryption ให้ผู้ใช้สามารถที่จะเลือกเปิด-ปิดได้เอง
ส่วนการเข้าถึงเรียกใช้ข้อมูลนั้นจะผ่านทาง HTTP protocol ดังนั้น จะเห็นว่าระบบ S3 จึงเหมาะกับการทำงานผ่านเวปหรือ mobile และเน้นการจัดเก็บหรือเรียกดูไฟล์ข้อมูลเป็นหลัก
ชนิดของข้อมูลที่เหมาะกับการใช้ Amazon S3
- Log files ต่าง ๆ
- ไฟล์เอกสาร เช่น Word, Excel, Powerpoint, PDF, Image files เป็นต้น
- ไฟล์พวก multimedia
- ไฟล์ที่ต้องการการเข้าถึงแบบ Sequential
- ข้อมูล backup ที่ต้องการเก็บไว้เป็นระยะเวลานาน
การสร้าง Bucket ใน Amazon S3
กด Create Bucket
ตั้งชื่อ Bucket และเลือก Region ( Region คือ ประเทศหรือสถานที่ที่ Data center ตั้งอยู่ )
ในที่นี้ เราจะตั้ง Bucket ชื่อ "myawsbucket1107" และเลือก Data center ที่ประเทศสิงคโปร์
ในที่นี้ เราจะตั้ง Bucket ชื่อ "myawsbucket1107" และเลือก Data center ที่ประเทศสิงคโปร์
การเพิ่ม object ลงใน Amazon S3
จากด้านบน เราจะได้ทำการสร้าง Bucket เสร็จเรียบร้อยแล้ว ให้คลิกเข้าไปที่ชื่อ myawsbucket1107 ที่เพิ่งสร้างขึ้น ขั้นตอนต่อไปจะเป็นเพิ่มไฟล์เข้าไปเก็บใน bucket โดยการกด Upload
จากด้านบน เราจะได้ทำการสร้าง Bucket เสร็จเรียบร้อยแล้ว ให้คลิกเข้าไปที่ชื่อ myawsbucket1107 ที่เพิ่งสร้างขึ้น ขั้นตอนต่อไปจะเป็นเพิ่มไฟล์เข้าไปเก็บใน bucket โดยการกด Upload
เลือก Add Files แล้วทำการเลือกไฟล์ข้อมูลที่ต้องการเพิ่ม
- ในที่นี้เราจะเพิ่มไฟล์ ชื่อ train.jpg
ให้กดที่ Properties ของไฟล์ train.jpg (ด้านขวามือ) ปกติ เมื่อมีการเซฟข้อมูลไปเก็บบนระบบ S3
ข้อมูลนั้นจะถูกกำหนดสิทธิเป็น Private ซึ่งผู้มีสิทธิเข้าถึงได้ คือเจ้าของ (owner) เท่านั้น
สังเกตที่ Link จะเป็นรูปกุญแจ
ทดลอง copy ลิ้งค์ด้านบนไปเปิดใน browser จะพบ error เกี่ยวกับ Access Denied
คราวนี้เราจะทำการเปิดสิทธิให้ทุกคนสามารถเข้าถึงได้ โดยเมนู Actions -> Make Public
กลับไปดูที่ Properties อีกครั้งจะเห็นว่าลูกกุญแจหายไปแล้ว
ทดลองเปิดลิงค์ดูอีกครั้ง คราวนี้จะเปิดไฟล์ได้แล้ว
การกำหนด Policies ในการเข้าถึง Folder และ Bucket
หลังจากที่เรียนรู้วิธีการเข้าถึงและกำหนดสิทธิให้แต่ละ object ไปแล้ว เรามาดูวิธีการกำหนดสิทธิแบบ Policies กันบ้าง ซึ่งวิธีการนี้จะมีความยืดหยุ่นกว่า
- ทำการสร้าง folder อันใหม่ ให้ชื่อว่า "myawsbucker1108"
- ภายใต้ folder ดังกล่าว ให้สร้าง sub-folder ชื่อ animal, flower และ food
จากนั้นเราจะเข้าไปเพิ่ม Policies กัน โดยเข้าไปที่ Properties -> Permissions -> Add bucket policy
กดที่ AWS Policy Generator ด้านล่าง
ในหน้า AWS Policy Generator ให้กำหนดค่า ดังนี้
- Select Type of Policy: S3 Bucket Policy
- Effect: Allow
- Principal: *
- Actions: GetObject
- Amazon Resource Name (ARN): arn:aws:s3:::myawsbucket1108/animal/*
กด Add Statement
แล้วกด Generate Policy จากนั้นให้ก๊อปปี้ policy text กล้บไปวางใน Bucket Policy Editor ดังรูป แล้วกด Save
จากนั้นทำการทดสอบ โดยการ upload ไฟล์ คือ
- ไฟล์ Deer.jpg เข้าไปใน sub-folder animal
- ไฟล์ bento.jpg เข้าไปใน sub-folder food
ลองสังเกตที่ Link ของทั้งสองไฟล์ จะเห็นว่าลิงค์มีลักษณะไม่แตกต่างกัน
แต่เมื่อลองใช้ browser ในการเข้าถึงลิงค์ทั้งสองด้านบน จะพบว่าเราสามารถเข้าถึงไฟล์ Deer.jpg ได้เท่านั้น ส่วนไฟล์ที่สองจะ error ทั้งนี้ก็เนื่องจาก policy ที่เรากำหนดให้เข้าถึงได้เฉพาะ sub-folder animal นั่นเอง
ก็ขอจบเรื่องการใช้งาน Amazon S3 แบบย่อ ๆ เพียงเท่านี้ แล้วพบในหัวข้อถัดไปกันครับ