클라우드는 우리가 만든 서비스를 돌아갈 수 있게 해주는 곳
웹사이트를 운영하기 위해 필요한 도메인, 서버, 데이터베이스 등등을
제공. (인프라라고 이야기함.)
- AWS는 여러 나라에 데이터 센터를 갖고 있음
데이터 센터가 있는 나라를 리전이라고 하고, 리전 내의 데이터 센터 위치를 존(AZ)이라고 함.
(서울에 데이터 센터가 영등포, 강남에 위치하고 있으면 서울리전에 영등포 존, 강남 존이라고
불리어지는 것.)
- 리전과 존이 중요한 이유는 AWS 사용하여 인프라를 구성할때 서비스 하려는 지역의 리전과 존을
사용해야 한다는 것.(한국에서 서비스 하려면 ap-northeast-2 리전을 사용)
- 서비스하려고 하는 지역과 가까운 곳의 리전을 사용할수록 사용자들에게 좀 더 빠른 속도로
서비스를 제공할 수 있음.
프론트 | 백엔드 | 데이터베이스 |
---|---|---|
S3 | EC2 | RDS |
IAM | ELB | ElastiCache |
Cloudfront | Elastic Beanstalk | ElasticSearch Service |
클라우드의 확장 가능한 스토리지(파일 저장 서비스)
액세스 차단 목록
- 버킷 : 파일을 저장하는 폴더
- 버킷 버전 관리 : 개발할때 소스를 git, svn으로 관리하는 것처럼 버킷내의 파일들을 버전을
관리할 수 있는 기능
- 태그 : 해당 버킷을 태깅해놓고 이후에 비용측정이라던지 많은 버킷중에 태그로 검색을 한다던지
할때 쓰는 태깅 기능
- 파일 업로드 : S3에 업로드 되는 모든 파일에는 객체 URL이 부여됨.
해당 URL을 브라우저 주소창에서 호출하면 업로드된 파일이 보임
(AccessDenied 에러 : 퍼블릭 권한 수정해야 함.)
AWS의 resource, 계정에 관한 access 관리
사용자, 역할을 관리하는 서비스
액세스 유형
프로그래밍 방식 엑세스 : 개발 언어와 연계해서 사용하는 방식
AWS Management Console 엑세스: 해당계정을 AWS 콘솔에서 로그인해서
사용하게 하는 방식
권한 부여
- 생성하는 사용자에게 권한을 부여
- 기존그룹에 추가하는 방법, 기존사용자 권한 복사, 기존 정책 직접 연결 하는 방법이 있음.
- S3를 위한 사용자이기 때문에 AmazonS3FullAccess 권한을 부여
키 확인
- 엑세스 키 ID, 비밀 엑세스 키를 복사해두기
프로그래밍을 돕는 라이브러리
개발과 연동해서 AWS를 사용할 수 있음
터미널 창에서
설치 후 확인 : aws --version
설정 : aws configure
SDK로 S3 파일업로드 : aws s3 cp {파일명} s3://{버킷이름} --acl public-read
Flask를 사용하여 S3 업로드 웹페이지 구현
# Flask + PyCharm
# new project - flask 만들기
# app.py
import boto3 # boto3로 AWS와 연동
from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
@app.route('/')
def main():
return render_template('index.html')
@app.route('/fileupload', methods=['POST'])
def file_upload():
file = request.files['file']
s3 = boto3.client('s3')
s3.put_object(
ACL="public-read",
Bucket="{버킷이름}",
Body=file,
Key=file.filename,
ContentType=file.content_type) # png, jpg 등
return jsonify({'result': 'success'})
if __name__ == '__main__':
app.run()