IAMの作成
- プログラムによるアクセスにチェック
-
AmazonS3FullAccess
のポリシーを割り当てる - svg形式で発行される、アクセスキーとシークレットアクセスきーが後のDjangoの設定で必要になる
S3の作成
バケットの作成
- デフォルトでは、パブリックアクセスすべてブロックになっているので、チェックを外す。
バケットポリシーの設定をする(バケットを選択し、アクセス許可項目にある)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "任意",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::バケット名/*"
}
]
}
Djangoでの設定
pip install boto3 django-storages
import environ
env = environ.Env()
env.read_env(os.path.join(BASE_DIR, '.env'))
# Django-Storage
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
# AWS-Settings
AWS_ACCESS_KEY_ID = env('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = env('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = env('AWS_STORAGE_BUCKET_NAME')
AWS_LOCATION = 'static' # s3バケット上のベースとなるファイルパス
# STATIC-Files
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
python manage.py collectstatic
散らばった画像や、jsを集約