카테고리 없음

AWS S3을 Django 연동 + Image File S3 저장

한소희DE 2021. 8. 3. 02:23

 

[오늘은 늦었으니 ㅠㅠ 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}'

 

 

 

 

 

 

 

 

저장 시 폴더 등을 어떻게 할 지 설정하면 설정한 대로 데이터가 잘 저장되는 것을 알 수 있다.