سلام خدمت دوستان .
چند مدتی هست که از آمازون s3 bucket storage
برای سرو فایل ها استفاده میکنم به نظرم خیلی عالی هست ( نظره شخصی ) دلیلشم با یه مثال میتونم بگم که پروژه ای بود که هر کاربر آواتاری رو آپلود میکرد بعد مدتی غرق در عکسهای یوزر ها شده بودیم . با استفاده از این سرویس عملا همه ی این استاتیک فایل ها رو خارج از پروژه نگه داری کردیم .
یه مثال دیگه در مورد لاگ بود که به همین روش تمامیه فایل های لاگ رو در فضای دیگه ای نگه میداشتیم .
خوب بریم که کوتاه تموم کنیم
۱ ساختن aws S3 bucket storage
برای راه اندازی بر روی پروژه جنگو نیاز داریم یه سری اطلاعات رو داخل settings.py
قرار بدیم که به ترتیب جلو میرویم .
S3 BUCKETS CONFIG
AWS_ACCESS_KEY_ID = ''
AWS_SECRET_ACCESS_KEY = ''
AWS_STORAGE_BUCKET_NAME = '
AWS_S3_FILE_OVERWRITE =
AWS_DEFAULT_ACL =
DEFAULT_FILE_STORAGE = ''
STATICFILES_STORAGE = ''
ابتدا یه اکانت آمازون بسازید و کارت اعتباری داخلش باید اضافه بشه . گر چه هیچ مبلغی از شما کسر نمیکنه چون خیلی از سرویس ها تقریبا رایگان هستن ( در حد استفاده کوچیک رایگانه )
بعد از داشبورد S3 رو جستجو کنید و به داشبوردش برید
روی create bucket
کلیک کنید .
مرحله ۱.۱
Bucket name :
اسمتون باید یونیک باشه بدونه کارکتر های غیر مجاز
اسم انتخابی مثال :
x-site-bucket
Region :
مهم نیست فعلا هر چی که براتون دیده شد بزارین بمونه
منطقه انتخابی مثال : US West
کلیک next
دوباره next تا ساخته بشه
بعد از دقایقی bucket storage شما حاضر میشه . نیازه که پرمیشن های مناسب برای دسترسی رو تایین کنیم
مرحله ۱.۲
روی x-site-bucket
کلیک کرده و قسمت permission
و زیر شاخه CORS configuration
رو انتخاب کنید . خیلی خلاصه تیکه کد پایین رو قرار میدیم و سیو میکنیم
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
۲ ساختن کاربر برای دسترسی IAM
از داشبورد اینبار IAM
رو جستجو کنید . بعد قسمت users
Username : xsiteusername
Access type : Programmer access
بعدی
permission
>قسمت
attach existing policies directly
>AmazonS3FullAccess
رو انتخاب میکنیم
بعدی . Access key ID
و secret access key
برای تنظیمات جنگو مورد نیاز هست اینا رو یه جا دمه دست کپی میکنیم تا جا گذاری کنیم
مثال :
AWS_ACCESS_KEY_ID = 'AKIAVDJSGSKNFLSLFJRK'
AWS_SECRET_ACCESS_KEY = 'somelongstringandnumber'
AWS_STORAGE_BUCKET_NAME = 'x-site-bucket'
نکته . این اطلاعات محرمانه حساب میشن پس بهتره با کسی با اشتراک نزارین و توی اینوایرمنت ذخیره کنید مقادیر رو و توی تنظیمات فراخوانی کنید .
برای تموم کردن این قضیه چند تا کتابخونه هم نیازه نصب کنیم تو این مرحله :
۳ . پروژه جنگو
pip install django-storages
pip install boto3
settings.py
INSTALLED_APP = [
....
'storages',
[
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
به همین سادگی تمامی استاتیک فایل ها از آمازون سرو میشه . هر چی سعی کردم کتابی بنویسم نشد
Source :
1 .
https://docs.djangoproject.com/en/3.0/ref/settings/#std:setting-STATICFILES_STORAGE
https://docs.djangoproject.com/en/3.0/ref/settings/#std:setting-STATIC_ROOT
2.
https://django-storages.readthedocs.io/en/latest/
3.
https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html
4.
https://boto3.amazonaws.com/v1/documentation/api/latest/index.html
5.
https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html
6.
https://docs.amazonaws.cn/en_us/IAM/latest/UserGuide/introduction.html