[AWS] RDB & S3 수정해야함

오동훈·2022년 8월 14일
0

AWS Cloud

목록 보기
3/8

1. AWS RDB 설정

1. RDS 파라미터 그룹 만들기

mysql 옵션을 사전에 설정해둔 것을 파라미터 그룹이라고 하는데, 데이터베이스에서 한글을 지원하도록 설정하기 위해 파라미터 그룹을 생성

2. RDS 인스턴스 생성

mysql로 설치
프리티어로 설정

3. 보안그룹 설정

해당 인스턴스에 접근할 수 있는 네트워크에 관한 설정

인바운드 : 어떤 IP 대역에서 인스턴스에 접근하도록 허용할 것인지 결정하는 부분

4. Django에서 RDB 연동

pip install pymysql
config/settings.py

import pymysql
pymysql.install_as_mySQLdb()
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'onlineshop',            # DB 이름
        'USER': 'onlineshop',            # DB 이름? 원래는 관리자 계정이라고 알고 있는데, 나는 인스턴스 이름 쳐야 가능했다.
        'PASSWORD': '***********',       # DB 관리자 비밀번호
        'HOST': "onlineshop.cy2ltarpjqix.ap-northeast-2.rds.amazonaws.com", # 데이터베이스 엔드포인트
        'PORT': '3306',
    }
}
python managy.py migrate
python manage.py createsuperuser

2. AWS S3 설정

S3(Simple Storage Service)는 아마존에서 제공하는 인터넷용 스토리지 서비스입니다.

1. S3 설정

버킷 만들기

2. IAM 설정

IAM( Identity and Access Management) AWS 리소스들에 대한 접근을 제어할 수 있는 서비스. 권한을 부여 or 제한하여 리소스 보관의 안정성을 높임

그룹 생성

엑세스 키 파일

3. Django 설정

S3를 파일 저장소로 활용할 수 있게 두 개의 모듈 설치

boto3는 S3를 사용하기 위한 모듈

pip install boto3

django-storages는 다양한 저장소를 사용하기 위한 모듈

pip install django-storage

이 두 개를 설치하면 django-storages를 통해 boto3를 이용한 저장소를 사용할 수 있고, boto3를 이용해 아마존 S3를 저장소로 설정해 미디어 서버로 사용 할 수 있음

error

botocore.errorfactory.NoSuchBucket: An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket do
es not exist

원인: BUCKET_NAME을 잘못 적어서 일어난 일
해결방법: BUCKET_NAME 수정하니 잘 해결

botocore.exceptions.ClientError: An error occurred (AccessControlListNotSupported) when calling the PutObject operation: The bucket does not allow ACLs

원인: s3 버킷에서 ACL이 활성화되어 있지 않았기 때문에 일어난 오류
해결방법: 활성화 시켜주면 됨

  1. S3 버킷> 권한 탭으로 이동합니다.
  2. 아래로 스크롤 객체 소유권(Object Ownership)으로 이동하여 편집을 클릭하십시오.
  3. ACL 비활성화에서 ACL 활성화로 설정을 변경하고 변경 사항을 저장합니다.

botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

원인: 사용자(AWS ID 및 AWS 암호로 식별됨)에 내 s3 버킷을 제어할 수 있는 액세스 권한이 부여되지 않았기 떄문에 일어난 현상
해결 방법:

  1. S3 버킷 > 권한 탭으로 이동합니다.
  2. 공개 액세스 차단(버킷 설정)으로 이동하여 편집을 클릭하십시오.
  3. 모든 공개 액세스 차단을 선택 해제 -> 저장

다음과 같은 에러들을 해결하면 다음과 같이 정적 파일 모으기 작업을 잘 수행한 것을 볼 수 있습니다.


profile
삽질의 기록들🐥

0개의 댓글