Thông tin liên hệ
- 036.686.3943
- admin@nguoicodonvn2008.info
Nếu đang dùng app web Django, bạn cần phải xử lý hiệu quả nội dung tĩnh và tệp tin đa phương tiện do người dùng tải lên. AWS S3 Bucket sẽ giúp bạn làm điều đó trong Django dễ dàng.
Amazon Web Services (AWS) Simple Storage Service (S3) Bucket là một giải pháp thay thế để lưu trữ các tệp đa phương tiện và tĩnh. Bằng cách tích hợp S3 với Django, bạn có thể giảm tải gánh nặng quản lý tệp trên máy chủ , giảm tải và đảm bảo phân phối nội dung nhanh hơn, đáng tin cậy hơn.
Nếu chưa có tài khoản, hãy tới trang AWS để tạo tài khoản mới.
Tài khoản AWS mới có quyền truy cập miễn phí 5GB lưu trữ chuẩn S3 mỗi tháng trong một năm.
AWS cung cấp một dịch vụ tên IAM (Identity and Access Management). Điều này cho phép bạn tạo một tài khoản riêng cho người hoặc ứng dụng cụ thể cần tương tác với các dịch vụ AWS.
Bạn có thể gán các cấp độ phân quyền khác nhau cho người dùng IAM, đại diện cho cá nhân hoặc ứng dụng tương tác với các dịch vụ AWS đã tạo. Với người dùng IAM, bạn có thể đảm bảo mỗi người dùng chỉ có quyền truy cập tài nguyên họ cần và không nhiều hơn.
Vì mục đích bảo mật, bạn nên tạo một người dùng IAM cho dự án Django để tương tác với bucket S3. Hãy làm theo những bước này để tạo một người dùng IAM trên AWS:
Trong AWS, khóa truy cập chỉ thông tin xác thực bạn có thể dùng để xác thực và truy cập an toàn tài nguyên AWS theo chương trình. Dự án Django của bạn phải cung cấp những thông tin xác thực này để truy cập bucket S3.
Những bước sau sẽ giúp bạn tạo một khóa truy cập cho dự án:
Để dùng bucket S3 với dự án Django, hãy cài đặt những gói sau:
Bạn có thể cài những gói này vào môi trường Python ảo với trình quản lý gói Pip của Python bằng lệnh sau trong terminal:
pip install django-storages boto3
Sau khi đã cài thành công những gói này, mở file settings.py và thêm boto3 vào app đã cài.
Cuối cùng, cấu hình dự án Django để dùng bucket AWS S3. Đây là cấu hình phổ biến:
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'
Dán cấu hình trên vào trong file settings.py và thay giá trị tương ứng. Thay AWS_ACCESS_KEY_ID và AWS_SECRET_ACCESS_KEY bằng khóa truy cập và khóa truy cập bí mật bạn đã sao chép hoặc tải ban đầu. Bạn cũng nên thay đổi AWS_STORAGE_BUCKET_NAME và AWS_S3_REGION_NAME sang tên của bucket và vùng S3.
Bạn có thể lấy tên miền bằng cách điều hướng tới bucket S3 và sao chép giá trị cuối cùng ở cột AWS region.
Mẫu code sau sẽ upload file trực tiếp từ bảng admin, nhưng bạn thoải mái upload dữ liệu từ vị trí khác.
Ở đây, bạn cso một mẫu như sau:
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
Đảm bảo bạn triển khai các hoạt động cần thiết như di chuyển, thêm nó vào bảng admin, tạo cửa sổ xem và những thứ cần cho dự án. Đảm bảo bạn tuân thủ quy tắc MVT của Django.
Sau khi hoàn tất, điều hướng tới bảng admin hoặc biểu mẫu đã tạo cho upload file và tải một file ảnh.
Điều hướng tới trang chính và xác nhận ảnh ở đó. Nếu có, click chuột phải vào ảnh, rồi chọn Open image in new tab. Trong tab mới chứa ảnh, bạn sẽ thấy thanh địa chỉ tham chiếu bộ chứa S3 đã tạo từ đầu:
Thêm những cấu hình sau vào file settings.py:
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_LOCATION = 'static'
Sau đó, mở Command Line Interface (CLI) và chạy lệnh:
python manage.py collectstatic --noinput
Để xác nhận mọi thứ hoạt động tốt, mở bucket S3 trong console AWS. Bạn sẽ thấy một thư mục tên static.
Thế là xong! Hi vọng bài viết hữu ích với các bạn.
Nguồn tin: Quantrimang.com
Ý kiến bạn đọc
Những tin mới hơn
Những tin cũ hơn