Django với Amazon S3

Giới thiệu

Thông thường để thuận tiện thì ta sẽ lưu trữ các file dữ liệu của người dùng (ví dụ như avatar, …) ngay trên host của mình. Nhưng để phát triển một sản phẩm product chịu tải được với lượng truy cập lớn, đặc biệt nếu trang web của chúng ta có chứa nhiều hình ảnh, video thì ta phải xây dựng một storage server để lưu trữ các file dữ liệu. Nhưng giải pháp này không khả thi, vì khá là tốn tiền, và mở rộng nó là khó khăn nếu như bạn không có đội ngũ Devops chuyên nghiệp.

Lúc này ta sẽ cần đến một nhà cung cấp dịch vụ storage. Sau khi google tìm hiểu kĩ các nhà cung cấp dịch vụ storage, tôi tìm thấy Amazon S3 là dịch vụ chất lượng cao với chi phí thấp.

Trong bài viết này tôi sẽ giới thiệu bạn dịch vụ Amazon S3 là gì, giải thích tại sao bạn nên dùng nó và cách tích hợp nó vào trong project django của bạn.

Amazon S3

Amazon S3 là viết tắt của cụm từ Amazon Simple Storage Service: Là dịch vụ đám mây lưu trữ do đó bạn có thể tải lên các tệp, các tài liệu, các dữ liệu tải về của người dùng hoặc các bản sao lưu.

Các ưu điểm của amazon s3:

Tính ổn định: Nó được thiết kế để chịu được các hỏng hóc và phục hồi hệ thống rất nhanh với thời gian tối thiểu. Amazon cung cấp một thỏa thuận cấp dịch vụ (service-level agreement – SLA) để duy trì tính sẵn sàng ở mức 99.99 phần trăm.

Đơn giản: Dễ dùng S3 được xây dụng trên các khái niệm đơn giản và cung cấp tính mềm dẻo cao cho việc phát triển các ứng dụng của bạn. Bạn có thể xây dựng các lược đồ lưu trữ phức tạp hơn, nếu cần, bằng cách thêm các hàm vào các thành phần của S3.

Tính mở rộng: Thiết kế của S3 cung cấp một cấp độ cao về tính mở rộng và cho phép sự điều chỉnh dễ dàng trong dịch vụ khi lượng truy cập vào ứng dụng web của bạn tăng đột biến với lưu lượng khổng lồ.

Rất Rẻ: Chi phí sử dụng S3 rất cạnh tranh với các giải pháp của công ty và cá nhân khác trên thị trường.

Tích hợp vào django project

 

Tạo bucket mới

Sau khi đăng nhập vào amazon s3, ta truy cập vào  https://console.aws.amazon.com/s3/home

– Chọn create bucket

– Nhập tên cho bucket và chọn Region (ví dụ Asia Pacific Singapore). Sau đó nhấn nút create.

 

Config ở django

Cài đặt: pip3 install django-storages-redux

Config trong file settings (sử dụng ACCESS_KEY_ID và SECRET_ACCESS_KEY trong file download về ở bước trước):

Một số config quan trọng:

Cấu hình các file media lưu trữ tại bucket-name/media:

Tự động tạo bucket hay không

Cấu hình region cho bucket: ví dụ với region singapore cấu hình ở bước trước.

Các thông tin config có thể tham khảo tại: https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html

Chú ý: Một số thông tin config có thể đã bị out date.

Sử dụng trong models

Có thể custom name file upload bằng cách:
 

Tham khảo: https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html

The following two tabs change content below.

Latest posts by Cuong Nguyen (see all)