WiseN

미디어 공유 웹사이트 만들기 #1 미디어 업로드

Aug 28,2015   |   AWS

작성자_GS Neotek

페이스북 공유하기 트위터 공유하기
Blog thumbnail

다루는 내용


· 미디어 파일을 저장할 아마존 S3 버킷 생성하기
· 보안 그룹 생성하기
· 웹 서버로 사용할 EC2 인스턴스 생성하기
· 데이터를 저장할 아마존 DynamoDB 데이터베이스 생성하기


 

 

실습






아마존 S3 버킷 생성






 


  • 버킷 생성




1. 콘솔에서 S3 클릭
2. Create Bucket 클릭
3. Create a Bucket – Select a Bucket Name and Region 창에서

∙ Bucket Name : webapp-media-sharing
∙ Region : Oregon
∙ Create 클릭


 



 




 


  • 버킷 정책 적용




1. 생성한 버킷명(webapp-media-sharing) 클릭
2. Properties 클릭
3. Permissions 클릭
4. Add bucket policy 클릭

∙ 정책 입력 (가이드 문서 #21. 아마존 S3 활용 참고)


 



 

∙ Save 클릭


 

 




미디어 데이터베이스 생성






 


  • 아마존 DynamoDB 생성




1. 콘솔에서 DynamoDB 클릭
2. Create Table 클릭
3. PRIMARY KEY 창에서

∙ Table Name : webapp-media-db
∙ Primary Key Type : Hash
∙ Hash Attribute Name : eib


 



 

∙ Continue 클릭


4. Add Indexes (optional) 창에서

∙ Continue 클릭


5. Provisioned Throughput Capacity 창에서

∙ Continue 클릭


6. Throughput Alarms (optional) 창에서

∙ Use Basic Alarms : 체크 해제
∙ Continue 클릭


7. Review 창에서

∙ Create 클릭


 



 

 




접근 제어






 


  • IAM 정책과 롤 생성




1. 콘솔에서 IAM 클릭
2. 왼쪽 메뉴에서 Policies 클릭
3. Create Policy 클릭
4. Create Policy 페이지

∙ Create Your Own Policy의 Select 클릭


5. Review Policy 페이지

웹 서버(EC2)는 S3 버킷의 객체에 read, write, delete 권한과 버킷 list를 볼 수 있는 권한이 있어야한다. 또한 DynamoDB 테이블에 query, scan, read, write, delete 권한이 필요하다.


 



 

∙ 샘플 소스 : http://us-east-1-aws-training.s3.amazonaws.com/self-paced-lab-11/static/lab11-role_policy.json
∙ Policy Name : WebApp-IAM-Policy
∙ Policy Document :


 



 

∙ Create Policy 클릭
혹은 Create Policy 페이지에서 Policy Generator를 선택하여 쉽게 생성할 수 있다.
S3의 Resource는 “arn:aws:s3:::webapp-media-sharing“과 “arn:aws:s3:::webapp-media-sharing/*” 모두 필요함에 유의하자.


 



 

6. 왼쪽 메뉴에서 Roles 클릭
7. Create New Role 클릭
8. Set Role Name 페이지

∙ Role Name : WebApp-IAM-Role
∙ Next Step 클릭


9. Select Role Type 페이지

∙ AWS Service Roles 라디오 버튼 선택
∙ Amazon EC2의 Select 클릭


10. Attach Policy 페이지

∙ Filter : Customer Managed Policies 선택
∙ WebApp-IAM-Policy 체크
∙ Next Step 클릭


11. Review 페이지

∙ Create Role 클릭


 



 




웹 서비스 생성






 


  • 웹 서버 실행




1. 콘솔에서 EC2 클릭
2. Launch Instance 클릭
3. Choose an Amazon Machine Image (AMI) 페이지

∙ Amazon Linux AMI의 Select 클릭


4. Choose an Instance Type 페이지

∙ Next: Configure Instance Details 클릭


5. Configure Instance Details 페이지

∙ IAM role : WebApp-IAM-Role 선택
∙ User data : As file (아래 소스 파일을 다운받아 bucket, table, region 수정 후 사용)
샘플 소스 : http://us-east-1-aws-training.s3.amazonaws.com/self-paced-lab-11/static/bootstrap-rlab-www.sh


 



 

∙ Next: Add Storage 클릭


6. Add Storage 페이지

∙ Next: Tag Instance 클릭


7. Tag Instance 페이지

∙ Value : WebApp Server
∙ Next: Configure Security Group 클릭


8. Configure Security Group 페이지

∙ HTTP가 허용된 보안 그룹 선택
∙ Review and Launch 클릭


9. Review Instance Launch 페이지

∙ Launch 클릭
∙ keypair 선택
∙ Launch Instances 클릭
∙ View Instances 클릭


 

 




서비스 테스트






 

1. 생성된 인스턴스(WebApp Server)의 Public DNS 확인
2. 브라우져 접속 (ec2-52-11-146-50.us-west-2.compute.amazonaws.com)

∙ Add entry 클릭하여 이미지를 추가한다.
∙ Title, Comment, File 항목을 모두 채우지 않으면 오류가 발생하므로 유의하자.


3. 콘솔에서 S3 클릭

∙ webapp-media-sharing 버킷명 클릭


 



 

4. 콘솔에서 DynamoDB 클릭

∙ webapp-media-db 테이블명 더블 클릭


 



 

 




확장 가능한 구성






 



 

CloudFormation을 이용하여 Auto Scaling과 Elastic Load Balancing을 포함하여 확장성과 가용성을 보장하는 구성으로 변경한다.

 

1. CloudFormation 템플릿 소스 :

https://us-east-1-aws-training.s3.amazonaws.com/self-paced-lab-11/rlab-part1-cfn.template


2. 콘솔에서 CloudFormation 클릭
3. Create Stack 클릭
4. Select Template 페이지

∙ Stack : WebApp-Rlab
∙ Source : Specify an Amazon S3 template URL
∙ Next 클릭


5. Specify Parameters 페이지

∙ KeyName : ec2_keypair
∙ RLabContentS3Bucket : webapp-media-sharing
∙ RLabDynamoDBTable : webapp-media-db


 



 

∙ Next 클릭


6. Options 페이지

∙ Key : Name
∙ Value : WebApp Rlab Server
∙ Next 클릭


7. Review 페이지

∙ I acknowledge that this template might cause AWS CloudFormation to create IAM resources. : 체크
∙ Create 클릭


8. 생성된 ELB의 DNS Name 확인
9. 브라우져 접속 (WebApp-Rl-ElasticL-C9QK6BKRC01J-784156694.us-west-2.elb.amazonaws.com)

 



 

 




참고