AI 웹 개발 과정/팀 프로젝트

팀 프로젝트 04 : 추천 시스템 페이지 - 7일차 / AWS RDS / AWS S3

만 기 2022. 6. 13. 23:12

 

 

AWS RDS 에 django 프로젝트 데이터베이스 연결하기

 

1. AWS 에서 RDS 생성하기 

 

  • 아마존 RDS 로 들어가서 데이터베이스 생성하기
  • 식별자 : DB 인스턴스 이름
  • DB 접속에 필요한 사용자 이름과 비밀번호 입력하고 기억하기
  • 인스턴스 클래스 : db.t2.micro
  • vpc 와 서브넷 지정
  • 로컬에서 테스트 하려면 퍼블릭 액세스 가능 선택하기
  • 데이터베이스 인증 : 암호 인증
  • 생성 후 조금 기다리면 엔드포인트 주소와 3306 포트가 입력된다.

 

*** 참조 링크 ***

https://velog.io/@hanif/AWS-RDS-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

 

[AWS] RDS 사용하기

RDS 생성하기

velog.io

 

 

2. 보안그룹설정

 

 

 

3. settings.py

 

*** 참조 링크 ***

AWS RDS + Django 데이터베이스 설정 (velog.io)

 

AWS RDS + Django 데이터베이스 설정

Amazon Relational Database Service(Amazon RDS)는 AWS 클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스입니다.이 서비스는 산업 표준 관계형 데이터베이스를 위한 경제

velog.io

 

 

4. DB 생성 (schema 추가)

  • pip install mysqlclient
  • pycharm database - new - data source - MySQL
  • HOST : 생성한 RDS 인스턴스 엔드포인트 입력, 포트 3306 확인
  • DB user id 와 password 입력
  • connection test 후 적용, 확인
  • 생성된 DB 우클릭 - new - schema 
  • name : DB 인스턴스 이름
  • 생성
  • makemigrations 와 migrate 실행
  • 생성된 테이블 확인

 

*** 참조 링크 ***

AWS RDS를 사용해 MySQL과 Python 연동 (feat. Pycharm) (tistory.com)

 

AWS RDS를 사용해 MySQL과 Python 연동 (feat. Pycharm)

먼저 아래 게시물을 참고해 AWS RDS 데이터베이스를 생성한다. https://daeunnniii.tistory.com/152 AWS RDS 데이터베이스 생성과 설정 방법 RDS란? RDS는 AWS에서 관계형 데이터베이스를 더욱 쉽게 설정, 운영 및

daeunnniii.tistory.com

 

 

 

AWS S3 에 django 프로젝트 static 폴더 복사하기

 

1. 버킷 만들기

  • 버킷 이름
  • 리전 : ap-northeast-2 (가까울수록 빠르다 )
  • 객체 소유권 ACL 활성화
  • 퍼블릭 액세스 차단 안함
  • 버킷 생성

 

2. IAM 생성하기

  • 사용자 이름
  • 액세스 유형 : 프로그래밍 방식 액세스
  • 그룹 생성 : 이름 정하고 S3 검색해서 AmazonS3FoullAccess 선택
  • 사용자 만들기
  • 액세스 키 ID 와 비밀 액세스 키를 받는다. 

 

3. 버켓 정책

  • 권한 설정 - 버켓 정책 편집 - 정책 생성기
  • select type of policy : s3 bucket policy
  • effect : allow
  • principal : *
  • aws service : 기본 설정(amazon s3)
  • actions : get object(읽기);put object(쓰기) 등등~ 어떤거 쓰게 할지 지정
  • ARN : arn:aws:s3:::버킷이름/ *
  • add statement
  • generate policy 누르고 json doc 복사 후 나와서 버켓 정책에 붙여넣기

 

4. django 모듈 install 

  • pip install boto3 : s3 사용을 위한 모듈
  • pip install django-storages : 다양한 저장소 사용을 위한 모듈
  • django-storages 를 통해 boto3를 사용한다.

 

5. django 프로젝트 폴더 settings.py 

# s3을 이용하기 위한 변수들
AWS_ACCESS_KEY_ID = 'IAM id'
AWS_SECRET_ACCESS_KEY = 'IAM PW'

AWS_REGION = 'ap-northeast-2'	# 버켓 리전
AWS_STORAGE_BUCKET_NAME = 'mlbbucket'	# 버켓 이름
AWS_S3_CUSTOM_DOMAIN = '%s.s3.%s.amazonaws.com' % (
    AWS_STORAGE_BUCKET_NAME, AWS_REGION)
AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}
AWS_DEFAULT_ACL = 'public-read'
AWS_LOCATION = 'static'
STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

 

6. 정적 파일 모으기

  • python manage.py collectstatic

 

7. settings.py 추가

  • INSTALLED_APPS = [ 에 'storages', 추가

 

8. asset_storage.py 생성

# config/asset_starage.py

from storages.backends.s3boto3 import S3Boto3Storage

class MediaStorage(S3Boto3Storage):
    location = 'media'
    file_overwrite = False