วิธีใช้ AWS S3 Bucket เพื่อโฮสต์ไฟล์สแตติกและไฟล์มีเดียใน Django
การจัดการสินทรัพย์คงที่และเนื้อหาที่ผู้ใช้สร้างขึ้นอย่างมีประสิทธิภาพเป็นสิ่งสำคัญในการพัฒนาเว็บแอปพลิเคชัน Django เนื่องจากองค์ประกอบเหล่านี้มีบทบาทสำคัญในการรับประกันประสิทธิภาพสูงสุดและประสบการณ์ผู้ใช้ที่ราบรื่น
ในการตั้งค่าการพัฒนา Django มีหน้าที่รับผิดชอบในการจัดการไฟล์ดังกล่าว อย่างไรก็ตาม ในบริบทของการผลิต คุณจะต้องพิจารณาโซลูชันทางเลือก เนื่องจากฐานผู้ใช้ของคุณขยายตัวอย่างมาก และเนื้อหาสื่อมีขนาดที่ใหญ่ขึ้นเรื่อย ๆ รวมถึงเนื้อหาเสียงและภาพ
การใช้ Amazon Web Services Simple Storage Solution (S3) ให้ทางเลือกอื่นสำหรับการจัดเก็บเนื้อหาแบบคงที่และมัลติมีเดีย ด้วยการรวมเข้ากับ Django วิธีการนี้ช่วยลดภาระบนเซิร์ฟเวอร์โดยการมอบหมายความรับผิดชอบในการจัดการไฟล์ให้กับ S3 ซึ่งจะช่วยลดภาระให้เหลือน้อยที่สุดและรับประกันการกระจายสินทรัพย์ที่รวดเร็วและเชื่อถือได้
ขั้นตอนที่ 1: สร้างบัญชี AWS
หากต้องการสร้างบัญชี Amazon Web Services (AWS) หากคุณยังไม่มี โปรดไปที่เว็บไซต์อย่างเป็นทางการของ AWS และทำตามคำแนะนำเพื่อสร้างบัญชีใหม่
บัญชี Amazon Web Services (AWS) ที่สร้างขึ้นใหม่มีสิทธิ์ได้รับสิทธิ์เข้าถึงพื้นที่จัดเก็บมาตรฐาน 5 กิกะไบต์ฟรีเป็นประจำทุกปี โดยเป็นส่วนหนึ่งของแพ็คเกจบริการ
ขั้นตอนที่ 2: สร้างบัคเก็ต S3 สำหรับโครงการของคุณ
⭐ หลังจากสร้างบัญชี AWS แล้ว ให้เข้าสู่ระบบและค้นหา S3 ในแถบค้นหาที่ด้านบน จากนั้นเลือกตัวเลือกแรก
⭐ หลังจากเลือกตัวเลือกแรกแล้ว คุณจะเห็นหน้าใหม่ คลิกปุ่มสร้างที่ฝากข้อมูล:
⭐ ถัดไป ระบุชื่อสำหรับบัคเก็ต S3 ของคุณ คุณสามารถปล่อยให้การกำหนดค่าส่วนใหญ่เป็นค่าเริ่มต้นได้
⭐ เลื่อนลงไปที่ส่วน Block Public Access settings for this bucket ยกเลิกการเลือก Block all public access setting และรับทราบคำเตือนที่ปรากฏขึ้น
⭐ เมื่อเสร็จแล้วให้คลิกปุ่มสร้างถัง ระบบจะนำคุณไปยังหน้าที่แสดงรายการบัคเก็ต S3 ที่คุณสร้างขึ้น
ขั้นตอนที่ 3: สร้างผู้ใช้ IAM บน AWS
AWS นำเสนอโซลูชันที่เรียกว่า Identity and Access Management (IAM) ซึ่งช่วยให้สามารถสร้างบัญชีส่วนบุคคลที่ปรับแต่งให้ตรงกับความต้องการของบุคคลหรือแอปพลิเคชันที่ต้องการโต้ตอบกับบริการของ AWS
AWS ให้ระดับการควบคุมการเข้าถึงของผู้ใช้แบบละเอียดผ่านบริการ Identity and Access Management (IAM) ด้วยการกำหนดระดับสิทธิ์ต่างๆ ให้กับผู้ใช้ IAM ซึ่งอาจเป็นบุคคลหรือแอปพลิเคชันที่โต้ตอบกับทรัพยากร AWS ของคุณ คุณสามารถจำกัดการเข้าถึงทรัพยากรเฉพาะของพวกเขาได้ ในขณะเดียวกันก็มั่นใจได้ว่าพวกเขาจะไม่ได้รับสิทธิ์เข้าถึงพื้นที่อื่นโดยไม่ได้รับอนุญาต
เพื่อให้มั่นใจในความปลอดภัยของแอปพลิเคชันของเรา จำเป็นอย่างยิ่งที่จะต้องสร้างวิธีการโต้ตอบที่ปลอดภัยระหว่างโปรเจ็กต์ Django และบัคเก็ต Amazon S3 ของเรา เพื่อให้บรรลุวัตถุประสงค์นี้ เราจะต้องติดตั้งผู้ใช้ Identity and Access Management (IAM) ภายในแพลตฟอร์ม Amazon Web Services (AWS) โปรดปฏิบัติตามคำแนะนำโดยละเอียดด้านล่างเพื่อสร้างผู้ใช้ IAM ใน AWS ให้สำเร็จ:
⭐ ในแถบค้นหา พิมพ์ IAM แล้วเลือกตัวเลือกแรก หน้าใหม่จะปรากฏขึ้น
⭐ ที่ด้านซ้ายมือของหน้า IAM เลือกผู้ใช้ จากนั้นคลิกปุ่มเพิ่มผู้ใช้ มันจะเปิดขึ้นมาอีกหน้าให้กรอกข้อมูล
⭐ เริ่มต้นด้วยการป้อนชื่อสำหรับผู้ใช้ IAM และคลิกปุ่มถัดไปที่ด้านล่าง: ในหน้าถัดไป คุณต้องเลือกระดับสิทธิ์สำหรับผู้ใช้ IAM ทำตามขั้นตอนเหล่านี้:
เริ่มต้นด้วยการเลือกตัวเลือก"แนบนโยบายโดยตรง"ภายในส่วน"สิทธิ์"
เพื่อสร้างกรอบการอนุญาตสำหรับผู้ใช้ IAM ของเรา เราต้องระบุขอบเขตของการดำเนินการที่ผู้ใช้ได้รับอนุญาตให้ดำเนินการภายในข้อจำกัดที่ระบุ เนื่องจากแอปพลิเคชันของเราต้องการความสามารถในการดึงและฝากเนื้อหาไฟล์ในบัคเก็ต Amazon S3 จึงควรให้สิทธิ์แก่ผู้ใช้ IAM ในการเข้าถึงพื้นที่เก็บข้อมูลดังกล่าวอย่างไม่จำกัด
⭐ ในส่วนนโยบายสิทธิ์ คุณควรค้นหา S3FullAccess และเลือกตัวเลือก เมื่อเสร็จแล้วให้คลิกปุ่มถัดไป
⭐ ถัดไป ตรวจสอบนโยบายสำหรับผู้ใช้ IAM และคลิกปุ่มสร้างผู้ใช้เพื่อสร้างผู้ใช้ IAM ของคุณ
ขั้นตอนที่ 4: สร้างคีย์การเข้าถึงสำหรับผู้ใช้ IAM ของคุณ
ใน Amazon Web Services (AWS) คีย์การเข้าถึงประกอบด้วยชุดข้อมูลรับรองการตรวจสอบสิทธิ์ที่เปิดใช้งานการเข้าถึงทรัพยากร AWS โดยทางโปรแกรมในลักษณะที่ปลอดภัย ในการเข้าสู่บัคเก็ต Amazon Simple Storage Service (S3) ภายในแอปพลิเคชัน Django ของคุณ จำเป็นต้องมีข้อมูลรับรองการเข้าถึงที่จำเป็นโดยโครงการของคุณ
การปฏิบัติตามชุดคำแนะนำขั้นตอนสามารถอำนวยความสะดวกในการผลิตรหัสผ่านการอนุญาตเฉพาะสำหรับความพยายามที่กำลังดำเนินอยู่ของคุณ
⭐ หลังจากสร้างผู้ใช้ IAM แล้ว คุณจะได้รับข้อความแจ้งเตือนที่แจ้งให้คุณดูผู้ใช้ หรือ คุณสามารถดูผู้ใช้โดยคลิกที่ชื่อผู้ใช้
⭐ จากนั้น เลือกแท็บ Security credentials เลื่อนลงเพื่อค้นหาส่วนคีย์การเข้าถึง แล้วเลือก สร้างคีย์การเข้าถึง
⭐ คุณจะต้องเลือกกรณีการใช้งานสำหรับการเข้าถึงของคุณ ดังนั้น AWS จึงสามารถแนะนำตัวเลือกอื่นได้ตามความเหมาะสม ไม่มีผลกับคีย์การเข้าถึงของคุณ อย่าลังเลที่จะเลือกตัวเลือก เช่น บริการของบุคคลที่สามหรือรหัสท้องถิ่น และรับทราบคำเตือนที่ปรากฏขึ้น เมื่อเสร็จแล้วให้คลิกปุ่มถัดไป
⭐ ในหน้าถัดไป ป้อนแท็กคำอธิบายสำหรับคีย์การเข้าถึงของคุณ แล้วคลิกปุ่มสร้างคีย์การเข้าถึง
⭐ หลังจากสร้างรหัสการเข้าถึงแล้ว คุณสามารถคัดลอกข้อมูลประจำตัวของคุณหรือดาวน์โหลดเป็นไฟล์ CSV ไม่ว่าจะด้วยวิธีใด ตรวจสอบให้แน่ใจว่าได้รักษาข้อมูลนี้ให้ปลอดภัย
ขั้นตอนที่ 5: กำหนดค่าโครงการ Django ของคุณสำหรับ S3 Bucket
ในการรวมบัคเก็ต Amazon S3 เข้ากับโปรเจ็กต์ Django จำเป็นต้องติดตั้งแพ็คเกจเฉพาะที่อำนวยความสะดวกในการผสานรวมนี้ แพ็คเกจเหล่านี้มีดังนี้:
Django Storages เป็นส่วนเสริมที่ช่วยให้สามารถสร้างแบ็คเอนด์ของที่เก็บไฟล์แบบกำหนดเองภายในเฟรมเวิร์กการพัฒนาเว็บ Django ช่วยให้นักพัฒนาสามารถกำหนดค่าและนำโซลูชันการจัดเก็บข้อมูลที่ต้องการไปใช้ได้ ให้ความยืดหยุ่นในการจัดการสินทรัพย์ดิจิทัลและปรับปรุงกระบวนการจัดการข้อมูล
Boto3 ซึ่งเป็นชุดพัฒนาซอฟต์แวร์ (SDK) ทำหน้าที่เป็นเครื่องมือสำคัญในการอำนวยความสะดวกในการโต้ตอบที่ราบรื่นระหว่างโครงการที่ใช้ Python และ Amazon Web Services (AWS)
ในการติดตั้งแพ็คเกจดังกล่าวภายในสภาพแวดล้อมเสมือน Python ของคุณ ให้ใช้ pip package manager โดยรันคำสั่งต่อไปนี้ผ่านเทอร์มินัลของคุณ:
pip install django-storages boto3
เมื่อคุณได้ติดตั้งแพ็คเกจเหล่านี้อย่างมีประสิทธิภาพแล้ว คุณจำเป็นต้องเข้าถึงไฟล์ settings.py'ของคุณ และเพิ่ม
boto3 ` ลงในรายการแอปพลิเคชันแบบบูรณาการภายในไฟล์การกำหนดค่าดังกล่าว
ในการใช้บัคเก็ต Amazon Web Services (AWS) Simple Storage Service (S3) ภายในโครงการ Django จำเป็นต้องทำการกำหนดค่าเฉพาะ ด้านล่างนี้เป็นขั้นตอนที่จำเป็นสำหรับกระบวนการนี้:
AWS_ACCESS_KEY_ID = 'AWS_ACCESS_KEY_ID '
AWS_SECRET_ACCESS_KEY = 'AWS_SECRET_ACCESS_KEY'
AWS_STORAGE_BUCKET_NAME = 'AWS_STORAGE_BUCKET_NAME'
AWS_S3_SIGNATURE_NAME = 's3v4',
AWS_S3_REGION_NAME = 'AWS_S3_REGION_NAME'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
AWS_S3_VERITY = True
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
รวมการกำหนดค่าที่ให้ไว้ในไฟล์ settings.py
เพื่อให้แน่ใจว่าแต่ละฟิลด์ที่กำหนดได้รับการอัปเดตอย่างเหมาะสม โดยเฉพาะอย่างยิ่ง ให้แทนที่คีย์ที่เกี่ยวข้อง เช่น AWS Access Key ID, Secret Access Key, S3 Bucket Name และ S3 Region Name ด้วยคีย์ที่เกี่ยวข้องซึ่งได้รับหรือเรียกคืนมาก่อนหน้านี้
ในการรับการกำหนดภูมิภาคของบัคเก็ต Amazon S3 ผู้ใช้อาจนำทางไปยังคอนเทนเนอร์พื้นที่จัดเก็บที่เกี่ยวข้องและอ่านรายการสุดท้ายภายในคอลัมน์"ภูมิภาค AWS"เพื่อดูข้อมูลดังกล่าว
ขั้นตอนที่ 6: ทดสอบการกำหนดค่า AWS ของคุณ
เมื่อทำตามขั้นตอนข้างต้นทั้งหมดแล้ว ตอนนี้คุณก็พร้อมที่จะประเมินการทำงานของแอปพลิเคชันของคุณผ่านการทดสอบไฟล์ ตัวอย่างโค้ดที่ตามมาแสดงการอัปโหลดไฟล์ที่สามารถทำได้ผ่านอินเทอร์เฟซการดูแลระบบ อย่างไรก็ตาม อย่าลังเลที่จะดำเนินการอัปโหลดของคุณเองจากตำแหน่งอื่น
เพื่อให้บริบทเหมาะสม ตัวอย่างหนึ่งที่เป็นไปได้ของแบบจำลองดังกล่าวอาจเป็นดังนี้:
class Post(models.Model):
title = models.CharField(max_length=225, blank=False, null=False)
content = models.TextField('Post Body', blank=False, null=False)
author = models.CharField(max_length=225, blank=False, null=False)
date_published = models.DateTimeField(auto_now=True)
image = models.ImageField(upload_to='posts')
def __str__(self):
return self.title
ตรวจสอบให้แน่ใจว่างานที่จำเป็นทั้งหมดได้รับการดำเนินการ รวมถึงการย้ายข้อมูล การรวมคุณลักษณะเข้ากับอินเทอร์เฟซการดูแลระบบ การสร้างวิธีการแสดงผลที่เหมาะสม และทำตามขั้นตอนเพิ่มเติมใดๆ ที่จำเป็นสำหรับการดำเนินโครงการของคุณให้สำเร็จ นอกจากนี้ ตรวจสอบให้แน่ใจว่าคุณปฏิบัติตามกระบวนทัศน์ Model-View-Template (MVT) ของ Django ในการพัฒนาแอปพลิเคชันของคุณ
เมื่อเสร็จสิ้นงานของคุณ โปรดดำเนินการต่อเพื่อเข้าถึงแดชบอร์ดการดูแลระบบของคุณ หรือใช้อินเทอร์เฟซเฉพาะที่คุณสร้างขึ้นสำหรับการส่งสื่อ จากนั้น อัปโหลดไฟล์กราฟิกในพื้นที่ที่กำหนด
โปรดไปที่เว็บไซต์หลักของคุณและตรวจสอบว่าภาพที่ระบุปรากฏตามที่คาดไว้หรือไม่ หากมี ให้คลิกที่ภาพดังกล่าวโดยใช้เคอร์เซอร์ของเมาส์ในขณะที่กดปุ่ม “Ctrl” (หรือปุ่ม “Command” สำหรับ Mac) บนแป้นพิมพ์ของคุณ จากนั้น เลือกตัวเลือก"เปิดรูปภาพในแท็บใหม่"จากเมนูบริบทที่ปรากฏขึ้น เมื่อเปิดรูปภาพในหน้าต่างหรือแท็บเบราว์เซอร์แยกต่างหาก ให้สังเกต URL ที่แสดงที่ด้านบนของเบราว์เซอร์ ควรสอดคล้องกับตำแหน่งของบัคเก็ต Amazon S3 ที่สร้างไว้ก่อนหน้านี้
วิธีอื่นในการตรวจสอบว่าการกำหนดค่าของคุณทำงานอย่างถูกต้องคือการเข้าถึงคอนโซล Amazon Web Services (AWS) และการดูคอนเทนเนอร์พื้นที่เก็บข้อมูลที่กำหนด ซึ่งคุณควรค้นพบไฟล์สื่อภาพของคุณภายในนั้น
ขั้นตอนที่ 7: รวบรวมไฟล์คงที่ไปยัง S3 Bucket ของคุณ
คุณได้อัปโหลดไฟล์มีเดียไปยังบัคเก็ต Amazon S3 เรียบร้อยแล้ว อย่างไรก็ตาม เพื่อให้เป็นไปตามข้อกำหนดของโปรเจกต์ คุณจำเป็นจะต้องอัปโหลดไฟล์สแตติกของคุณด้วย
ในการใช้งานฟังก์ชันนี้ จำเป็นต้องแก้ไขไฟล์’settings.py’โดยเพิ่มการกำหนดค่าเฉพาะ การกำหนดค่าเหล่านี้จะเปิดใช้งานผลลัพธ์ที่ต้องการและรับประกันประสิทธิภาพสูงสุดของระบบ
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_LOCATION = 'static'
หลังจากที่คุณเข้าถึง Command Line Interface (CLI) แล้ว โปรดดำเนินการคำสั่งต่อไปนี้:
python manage.py collectstatic --noinput
เพื่อให้แน่ใจว่าบัคเก็ต Amazon Simple Storage Service (S3) ทำงานได้อย่างเหมาะสม ให้ไปที่ AWS Management Console และเข้าถึงบัคเก็ต S3 ของคุณ ภายในรายการของบัคเก็ต คุณควรสังเกตไดเร็กทอรีที่มีชื่อว่า"คงที่"
ใช้ AWS S3 Bucket เพื่ออะไรอีกมากมาย
Simple Storage Service (S3) ของ Amazon Web Services นำเสนอศักยภาพมากมายที่คู่ควรกับความเข้าใจและความเชี่ยวชาญของคุณในการใช้ความสามารถที่เหนือกว่าฟังก์ชันการจัดเก็บอ็อบเจกต์ทั่วไป ตัวอย่างเช่น คุณสามารถใช้ S3 เป็นแพลตฟอร์มที่เหมาะสำหรับการโฮสต์เว็บไซต์แบบสแตติก โดยใช้ประโยชน์จากความสามารถในการปรับขนาดและความน่าเชื่อถือ
การใช้ความสามารถของ Amazon Simple Storage Service (S3) Buckets อย่างเชี่ยวชาญสามารถให้ประโยชน์มากมายในแง่ของประสิทธิภาพและการพัฒนาผลิตภัณฑ์ อย่างไรก็ตาม จำเป็นอย่างยิ่งที่จะต้องเข้าใจว่า S3 อาจไม่สอดคล้องกับความต้องการเฉพาะของโครงการเสมอไป ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องประเมินข้อกำหนดของการดำเนินการก่อนดำเนินการ