본문 바로가기

Cloud AWS

Amazon AWS :: 동영상 공유 웹사이트 만들기 #1 동영상 업로드

 



 

 


Amazon AWS :: 동영상 공유 웹사이트 만들기 #1 동영상 업로드


본자료는 저자의 허락하에 공유되는 자료입니다.

국내 전문 CDN 사업자인 GS네오텍은 2015년에 Amazon Web Service의 AWS Premier Consulting 파트너로서 WiseN 이라는 서비스 브랜드로 클라우드 사업을 함께 하고 있습니다. 

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

다루는 내용

  • 미디어 파일을 저장할 아마존 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

arang

Sr. Technical Trainer at GSNeotek





  Reference : GS네오텍 WiseN 서비스



www.SalesMore.co.kr