[오늘은 늦었으니 ㅠㅠ S3 원리 및 추가 상세 설명은 추후에 포스팅 하겠다..! 우선 핵심 코드만 블로깅...!!! ]
1. S3 버킷 생성
2. 버킷 정책 설정
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "StatementSid1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::번호:user/버킷이름"
},
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::버킷이름/*"
},
{
"Sid": "StatementSid2",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::버킷이름/*"
}
]
}
3. CORS 설정
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"PUT",
"POST",
"HEAD"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [
"ETag"
],
"MaxAgeSeconds": 3000
}
]
4. IAM 정책 생성
정책 권한 설정
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3statement",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObjectAcl",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::버킷이름/*",
"arn:aws:s3:::버킷이름"
]
}
]
}
5. 4의 권한으로 IAM 사용자 생성
여기서 생성된 arn 번호를 위 2번에서 작성하도록 설정
6. Django settings.py 설정
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_S3_OBJECT_PARAMETERS = {'CacheControl':'max-age=86400',}
AWS_REGION='리전'
AWS_DEFAULT_ACL = 'public-read'
AWS_STORAGE_BUCKET_NAME = '버킷이름'
AWS_ACCESS_KEY_ID = ''
AWS_SECRET_ACCESS_KEY = ''
AWS_LOCATION = ''
AWS_S3_SECURE_URLS = False
AWS_QUERYSTRING_AUTH = False
AWS_S3_FILE_OVERWRITE = False
AWS_S3_CUSTOM_DOMAIN = f's3.{AWS_REGION}.amazonaws.com/{AWS_STORAGE_BUCKET_NAME}'
STATIC_URL = f'http://{AWS_S3_CUSTOM_DOMAIN}/{AWS_LOCATION}'
저장 시 폴더 등을 어떻게 할 지 설정하면 설정한 대로 데이터가 잘 저장되는 것을 알 수 있다.