다루는 내용
· 미디어 파일을 저장할 아마존 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)
참고
- Bucket 정책 : http://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html
- DynamoDB 데이터 모델 : http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html
- IAM 정책 : http://docs.aws.amazon.com/IAM/latest/UserGuide/policy-reference.html