본문 바로가기

웹/Django

aws 에 배포하기 2 -rds , s3

1. rds 연동

rds 인스턴스를 생성하고

settings.py에 db 설정을 해준다.

1
2
3
4
5
6
7
8
9
10
DATABASES = {
    'default': {
        'ENGINE''django.db.backends.mysql',
        'HOST''che1-db.czxnimwgemge.ap-northeast-2.rds.amazonaws.com',
        'PORT''3306',
        'NAME''django_rds',
        'USER''admin',
        'PASSWORD''*******',
    }
}
cs

그리고 migration을 하자

python3 manage.py migrate

만약 오류가 뜨면

pip3 install MysqlClient 를 하자

만약 MysqlClient 설치중 오류가 나타날 때

egg_info 관련 :sudo apt-get install libmysqlclient-dev 를 하자

그럼 끝!

 

 

 

s3 관련해서

2. s3 생성 및 설정

https://ssungkang.tistory.com/entry/Django-AWS-S3%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%97%85%EB%A1%9C%EB%93%9C

 

[Django] AWS, S3를 이용한 이미지 업로드

Django media 파일 업로드 하기 [Django] media 파일 업로드하기 Media 파일이란? media 파일이란 FileField 를 통해 저장한 모든 파일을 지칭합니다. 물론 ImageField 도 FileField 를 상속받은 필드로서 유사 필..

ssungkang.tistory.com

참조

먼저 admin 권한을 가지고 있는 계정이 s3 버킷을 하나 만든다. 그리고

버킷을 퍼블릭으로 설정하기 위해 퍼블릭 차단에 관한 설정을 다 체크 해제해 준다.

그리고 시험삼아 파일을 하나 업로드 하고 그 파일을 '퍼블릭으로 설정' 해준다.

버킷 정책을 생성하자, 이 때 모르겠으면 정책 예제에서 대충 선택하고 "Action":"s3:*" 로 해버리자 

그리고 밑의 cors 설정을 하자

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
    <MaxAgeSeconds>5000</MaxAgeSeconds>
    <ExposeHeader>ETag</ExposeHeader>
</CORSRule>
</CORSConfiguration>
cs

ExposeHeader 는 사용자가 접근가능한 Amazon S3 반환 응답헤더를 지정하는 항목이다.

 

3. python 으로 s3 연결

python에서 aws 에 접근 가능한 boto3를 설치하자

pip3 install boto3

커스텀 스토리지 패캐지 django-storages 도 설치하자

django-storages 는 설치후 INSTALLED_APPS={ 'storages', } 와 같이 등록을 해줘야 한다.

 

4.추가 설정

그 후 settings에서 다음의 내용을 추가해 보자

1
2
3
4
5
6
7
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_S3_SECURE_URLS = False       # use http instead of https
AWS_QUERYSTRING_AUTH = False     # don't add complex authentication-related query parameters for requests
 
AWS_S3_ACCESS_KEY_ID = '{엑세스 키 ID}'
AWS_S3_SECRET_ACCESS_KEY = '{비밀 엑세스 키}'
AWS_STORAGE_BUCKET_NAME = '{bucket_name}'
cs

 

' > Django' 카테고리의 다른 글

aws에 배포하기 -3 배포 자동화  (0) 2021.06.16
aws 에 배포하기  (0) 2021.06.14
Django 5. 클래스 뷰  (0) 2021.05.13
Django 3. 화면이동과 view 와 template간의 폼 처리  (0) 2021.05.13
Django 2. 프로젝트 뼈대 만들기  (0) 2021.05.10