다루는 내용
가이드 문서 (26. 미디어 공유 웹사이트 만들기 #1 미디어 업로드)에서 구성한 웹 서비스는 이미지 뿐만 아니라 동영상 파일도 업로드 및 다운로드가 가능하다. 그러나 동영상의 경우 단순 다운로드가 아닌 스트리밍 서비스가 필요하므로 스트리밍에 필요한 설정과 트랜스코딩에 대해서 실습해 본다.
· 미디어 컨텐츠 스트리밍
· 아마존 Elastic Transcoder를 이용하여 미디어 컨텐츠 트랜스코딩
실습
아마존 S3 버킷 확인
버킷 확인 (생성되어 있는 버킷을 확인한다.)
혼돈을 방지하기 위해 S3에 저장되어 있는 객체는 삭제하도록 한다.
1. 콘솔에서 S3 클릭
2. webapp-media-sharing 버킷명 클릭
3. Properties 클릭
4. Permissions 클릭
5. Edit bucket policy 클릭
아래와 같이 정책이 정의되어 있다.
데이터베이스 확인
데이터베이스 확인 (생성되어 있는 DB를 확인한다.)
혼돈을 방지하기 위해 DynamoDB에 저장되어 있는 아이템은 삭제하도록 한다.
1. 콘솔에서 DynamoDB 클릭
2. 테이블명 : webapp-media-db 확인
트랜스코딩
파이프라인 생성
1. 콘솔에서 Elastic Transcoder 클릭
2. Create a new Pipeline 클릭
3. Create New Pipeline 페이지
업로드되는 파일이 저장되는 버킷과 트랜스코딩된 결과 파일이 저장되는 버킷, 썸네일을 저장하는 버킷을 각각 지정할 수 있지만 여기서는 동일한 버킷을 사용한다.
∙ Pipeline Name : webapp-media-pipeline
∙ Input Bucket : webapp-media-sharing
∙ IAM Role : Create console default role 선택
Configuration for Amazon S3 Bucket for Transcoded Files and Playlists
∙ Bucket : webapp-media-sharing
∙ Storage Classs : Standard 선택
Configuration for Amazon S3 Bucket for Thumbnails
∙ Bucket : webapp-media-sharing
∙ Storage Class : Reduced Redundancy 선택
∙ Create Pipeline 클릭
4. Pipelines 상세 페이지
∙ Pipeline ID : 1425629152273-lk5cdl 복사
Job 생성
트랜스코딩 작업을 수동으로 실행할 수 있다. 이 실습에서는 EC2에서 API로 Job을 실행하므로 생성하지 않아도 된다.
1. Create New Job 클릭
2. Create a New Transcoding Job 페이지
프리셋 설정
Preset은 트랜스코딩 결과 파일의 포맷을 결정한다. 미디어 서비스에서는 통칭 프로파일이라 불리며 사용자 정의 설정이 가능하다.
1. Elastic Transcoder의 왼쪽 메뉴에서 Presets 클릭
2. Create New Preset 클릭
3. Create a New Transcoding Preset 페이지
∙ Start With Preset : System preset: Generic 360p 4:3 선택
∙ Name : WebApp Transcoding 360p 4:3 입력
Video
∙ Padding Policy : Pad 선택
Thumbnails
∙ Interval : 10
∙ Sizing Policy : ShrinkToFill
∙ Padding Policy : Pad
∙ Create Preset 클릭
4. Presets 상세 페이지
∙ Preset ID : 1425630108668-4zdw5u 복사
컨텐츠 전송 (스트리밍)
미디어가 웹 페이지에서 Flash player등으로 재생되기 위해서는 서버에서 컨텐츠를 스트리밍해주어야한다. 아마존 CloudFront는 HTTP뿐만 아니라 RTMP를 사용한 스트리밍이 가능하다.
아마존 CloudFront 스트리밍
1. 콘솔에서 CloudFront 클릭
2. Create Distribution 클릭
3. Select a delivery method for your content 페이지
∙ RTMP 섹션의 Get Started 클릭
4. Create Distribution 페이지
∙ Origin Domain Name : webapp-media-sharing.s3.amazonaws.com 선택
∙ Create Distribution 클릭
∙ Status가 Deployed될 때까지 기다린다.
∙ Domain Name : s2fxgrwa1qbisa.cloudfront.net 확인
웹 서버 설정
CloudFormation으로 웹 서버 단 설정을 한다. EC2 인스턴스, 보안그룹, ELB, Auto Scaling, IAM 관련 리소스가 설정된다. 즉, 위에서 설정한 S3, DynamoDB, Elastic Transcoder, CloudFront 설정은 변경하지 않는다.
1. 콘솔에서 CloudFormation 클릭
2. Create Stack 클릭
3. Select Template 페이지
∙ Stack : WebApp-Rlab2
∙ Source : Specify an Amazon S3 template URL
https://us-east-1-aws-training.s3.amazonaws.com/self-paced-lab-12/rlab-part2-cfn.template
∙ Next 클릭
4. Specify Parameters 페이지
∙ CloudFrontDistributionName : s2fxgrwa1qbisa.cloudfront.net
∙ KeyName : ec2_keypair
∙ RLabContentS3Bucket : webapp-media-sharing
∙ RLabDynamoDBTable : webapp-media-db
∙ RlabETPipeline : 1425629152273-lk5cdl
∙ RLabETPreset : 1425630108668-4zdw5u
∙ Next 클릭
5. Options 페이지
∙ Key : Name
∙ Value : WebApp Rlab Server2
∙ Next 클릭
6. Review 페이지
∙ I acknowledge that this template might cause AWS CloudFormation to create IAM resources. : 체크
∙ Create 클릭
7. 콘솔에서 EC2 클릭
8. 왼쪽 메뉴에서 Load Balancers 클릭
9. 새로 생성된 ELB의 DNS Name 확인
WebApp-Rl-ElasticL-1LFV2NGV3L3LI-505264650.us-west-2.elb.amazonaws.com
미디어 서비스 테스트
1. 브라우져에서 ELB DNS Name 접속
2. 테스트 미디어 파일 업로드
∙ 샘플 미디어 파일 : http://rlab-content.s3.amazonaws.com/video_1_bigdata.mp4
3. 스트리밍 실행 확인
참고
- CloudFomation의 user data에의해 실행되는 어플리케이션
∙ 위치 : /var/www/rlab/app
∙ 소스를 확인해 보면 생성되는 썸네일 중 3번째 파일을 사용하도록 하드코딩되어 있다. Preset에서 Thumbnail의 Interval이 기본값이 60초로 되어 있으므로 런타임이 짧은 컨텐츠로 테스트를 하면 썸네일이 2개 이하로 생성되어 정상적으로 확인이 어렵다. 런타임이 3분 이상인 컨텐츠로 테스트 하던가 Interval을 짧게 조정 해야한다. 물론 SSH 접속하여 소스를 수정해도 된다.
∙ 소스는 트랜스코딩이 완료된 후 원본 파일과 사용하지 않는 썸네일 파일을 삭제한다. - CloudFront에서 RTMP 호출 URL
∙ rtmp://[CloudFront DNS]/cfx/st/mp4:[FileFullPathName]
∙ 예. rtmp://s2z442py1hd2oi.cloudfront.net/cfx/st/mp4:output/output/wildlife.mp4
/cfx/st가 어플리케이션명처럼 명시되어야한다. - 미디어 스트리밍 : http://aws.amazon.com/ko/cloudfront/streaming/