Sync File ขึ้น S3 แบบทั้งยวง
16 มิ.ย. 68 , 08:50
ที่เก็บ static file สุดเจ๋ง

เริ่มจากติดตั้ง aws-cli ก่อนเลย ซึ่งมีทั้ง Windows , Linux , Mac สามารถดาวน์โหลดได้

ที่นี่

เรื่องการติดตั้งก็ไม่มีอะไรให้อธิบาย แต่หลังจากติดตั้ง มีเรื่องที่ต้องทำ ก่อนคือ การตั้งค่า ให้ใช้คำสั่ง aws configure เพื่อตั้งค่า AccessKey ตามนี้

ตรง Access Key กับ Secret Access Key ก็ใส่ของท่านไป ตามที่สร้างเอาไว้ ส่วน region ผมใช้ของสิงค์โปร์ (ซึ่งใกล้ไทยสุด) ก็เลยใส่ว่า ap-southeast-1 ส่วน output ก็ใส่ว่า json ตามปกติ 

แค่นี้ก็เริ่มใช้งาน ขั้นถัดไปได้แล้ว

เอาง่ายเลย คำสั่งมันมีแค่

ซึ่ง เราจะ Sync จาก S3 ลงมา รึจะเอาขึ้นไป ก็ได้ โดยการสลับ [source] กับ [destination] นั่นล่ะ

ทีนี้ถ้าเป็นเครื่องเรา ก็ใส่ absolute path เข้าไป เช่น d:/my-path/ ส่วน ถ้าเป็นฝั่ง s3 ก็ใส่ bucket กับ path ไป เช่น s3://my-bucket/my-path/ รวมๆ แล้วจะได้คำสั่งประมาณนี้ ก็เริ่ม sync ได้เลย

เรียกดูรายการ bucket

ลบ folder ทั้งยวง

จริงๆ S3 นอกจาก AWS แล้ว ยังมีเจ้าอื่นๆ ที่ใช้เทคโนโลยีเดียวกันนี้ด้วย (เค้าเรียกว่า Object-Storage) เราสามารถใช้คำสั่ง ข้างบนได้ด้วย

เท่าที่ผมใช้งานจริง ลองแล้ว อยู่สองเจ้านะครับ คือ digitalocean กับ cloudflare ซึ่งจะมีรายละเอียด ย่อยๆ ตามนี้

digitalocean

ต้องไประบุ Default region name เป็น sgp1 (กรณีใช้กับสิงค์โปร) แล้วก็ใช้คำสั่ง ระบุ endpoint แบบนี้

 cloudflare 

เจ้านี้ต้องไประบุ Default region name เป็น auto ซะงั้น แต่ต้องไประบุ endpoint แยกตาม acc ที่ใช้งานแทน ซึ่งใช้ Account ID ตรงๆ เลย แบบนี้

โดยปกติผมใช้ s3 เพื่อเป็นที่เก็บ static file ที่เอาไปใช้แบบ public url

ปัญหาคือ พอเรา sync เข้าไปแบบที่ ทุกไฟล์ที่ส่งเข้าไป จะไม่ได้ public access ซึ่งวิธีแก้ ก็คือ ไปไล่เซ็ต permission มันใหม่

จากที่ค้นๆ ดูเจอวิธีแก้หลายวิธี แต่พบว่า แก้ด้วยการตั้ง  bucket policy ง่ายที่สุด (และดูเข้าท่าที่สุด)

โดยการใส่ policy ประมาณนี้ได้เลยครับ