바뀜

2,761 바이트 추가됨 ,  2023년 2월 6일 (월) 17:39
새 문서: =외부서비스 연결[어째서인지, 나는 잘 안된다;;]= 많은 사용자를 감당하려면 웹 서버를 늘려야 하는데, 이미지를 관리하는 가장 간단한...

=외부서비스 연결[어째서인지, 나는 잘 안된다;;]=
많은 사용자를 감당하려면 웹 서버를 늘려야 하는데, 이미지를 관리하는 가장 간단한 방법은 별도의 서버를 두고 모두가 같은 이미지서버를 사용하게 하는 것이다.
==AWS 연동==
아마존에서 지원하는 서버이다. 여기에 가입하자. [https://aws.amazon.com/ https://aws.amazon.com]

서비스는 스토리지의 S3를 이용할 것이다. 버킷단위로 서비스를 제공한다. 버킷을 만들어보자.(필자는 question-pool이라고 정했다.)

만들 때 ACL관련 체크는 다 풀어주자.(허용)
===권한설정 및 사전작업===
#<code>서비스>보안,자격증명 및 규정준수>IAM</code> 에서 <code>사용자>사용자 추가</code>에서 사용자이름을 입력하고 <code>프로그래밍 방식 엑세스</code>에 체크한다.(API로 데이터를 주고받을 것이기에.)
#그룹명을 기입하고 필터에 S3를 넣으면 나오는 <code>AmazonS3FullAccess</code>를 체크하고 생성한다. 이후 API키가 나올 때까지 알아서 마무리.
#생성하면 나오는 페이지에 엑세스 키가 나오는데, 이 페이지를 벗어나면 다시 확인할 방법이 없다. csv다운로드로 다운로드 해둔다.
===장고에 연결===
*<code>pip install boto3</code>(S3을 다루는 모듈)을 설치한다.
*pip install django-storages(다양한 저장소를 사용하게 해주는 모듈)설치.
*settings.py 안의 INSTALLED_APPS 항목에 'storages'를 추가한다.
*이후 적당한 곳에 아래의 코드 추가.
<syntaxhighlight lang="python">
AWS_ACCESS_KEY_ID='유저키' #받은 유저키를 넣는다.
AWS_SECRET_ACCESS_KEY='유저비밀키' #받은 비밀키를 넣는다.
AWS_REGION='ap-northeast-2' #아마존에서 서울을 가리키는 코드. 커스텀도메인에 넣기 위한 변수.
AWS_STORAGE_BUCKET_NAME='question-pool' #아마존에서 만든 버킷명. 커스텀도메인에 넣기 위한 변수.
AWS_S3_CUSTOM_DOMAIN='%s.s3.%s.amazonaws.com' % (AWS_STORAGE_BUCKET_NAME, AWS_REGION)
AWS_S3_OBJECT_PARAMETERS={'CacheControl':'max-age-86400',}

DEFAULT_FILE_STORAGE='config.asset_storage.MediaStorage' #MediaStorage클래스로 파일저장소를 다루겠다.
#기본 미디어 위치를 지정해주기 위해 따로 지정한다.

</syntaxhighlight>
====asset_storage.py 작성====
config(장고기초폴더) 아래에 위 이름으로 파일을 작성하고 다음과 같이 기입한다.<syntaxhighlight lang="python">
from storages.backends.s3boto3 import S3Boto3Storage

class MediaStorage(S3Boto3Storage):
location='media' #기존의 디렉터리를 지정한다.
file_overwrite=False
</syntaxhighlight>
[[분류:장고 이미지]]