넷플릭스 등 세계에서 AWS를 잘 활용하는 회사들이 공개하는 AWS의 제품 사용 경험을 참조하기
넷플릭스의 AWS 활용
https://aws.amazon.com/ko/solutions/case-studies/netflix/
S3는 클라우드의 확장 가능한 스토리지로, 버킷으로 구성된다.
S3에서 파일을 저장하는 폴더의 역할을 수행하는 것으로, 이때 각 버킷은 고유한 이름을 가지도록 설정해야 한다.
버킷 선택 -> 업로드 화면 이동 -> 파일 추가 -> 업로드 완료
파일 리스트 확인 -> 파일 정보 확인 -> 객체 URL 확인
해당 URL을 브라우저 주소창에서 호출하면 업로드한 파일이 보인다.
하지만 파일에 권한을 퍼블릭하게 주지 않았기 때문에 AccessDenied라는 에러가 발생하게 된다.
파일의 권한을 퍼블릭하게 하기 위해서는 버킷의 권한을 퍼블릭하게 수정해야 한다.
버킷의 권한 탭 -> 편집 -> 모든 퍼블릭 엑세스 차단 체크박스의 체크를 해제 -> 파일의 권한 탭 -> 파일 퍼블릭 권한 부여 -> 브라우저에서 파일 확인
IAM은 Identity and Access Management의 약자로
사용자, 역할을 관리하는 서비스이다.
왼쪽 메뉴 중 사용자 메뉴를 클릭 -> 사용자 추가
-> 개발 언어와 연계하여 사용하는 것이 목적이므로 프로그래밍 방식 엑세스 선택
생성하는 사용자에게 권한을 부여하는 페이지
-> 위 세가지 방식 중 처음에는 기존 그룹이나 사용자가 없기에 기존 정책 직접 연결을 선택
-> S3를 사용할 것이므로 AmazonS3FullAccess 권한을 부여
설정한 부분들이 제대로 입력되었는지 검토하고,
사용자 만들기 버튼을 클릭
사용자가 생성되면 해당 사용자의 엑세스 키 ID와 비밀 엑세스 키가 생성되는데, 이를 잘 보관해야 하고 외부에 노출되지 않도록 해야한다.
SDK는 Software Development Kit의 약자로, 프로그래밍을 돕는 라이브러리이다.
AWS SDK를 이용하면 개발과 연동해 AWS를 사용할 수 있다.
설치
https://awscli.amazonaws.com/AWSCLIV2.msi
cmd or terminal에 아래 코드를 입력해 SDK 설치 확인
aws --version
이어서 아래 코드를 입력해 기본정보 (사용자 엑세스 키 등)을 입력
aws configure
SDK 명령어 설명
https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html
업로드 명령어
aws s3 cp 파일명 s3:// 버킷이름 --acl public-read
[파일명]의 이름을 가진 파일을 [버킷이름]의 이름을 가진 버킷에 public-read 권한을 부여한 상태로 업로드
AWS의 모든 제품들은 SDK 라이브러리를 거의 모든 언어에 제공
예시는 파이썬이지만 사용하는 모든 언어에 비슷하게 사용 가능
import 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)
return jsonify({'result': 'success'})
if __name__ == '__main__':
app.run()
프로그램은 파이참을 이용하였다.
S3의 버킷에 index.html 등 웹사이트에 필요한 리소스들을 저장하면 S3가 해당 웹사이트를 호스팅 해주는 기능
속성 -> 정적 웹 호스팅 -> 편집 -> 활성화 시키기
마지막으로 index.html 파일을 업로드하고 버킷의 속성에 들어가 정적 웹 호스팅 메뉴에 있는 링크로 이동하면 웹페이지가 생성된 것을 확인할 수 있다.