Media Convert + S3 + Cloudfront 활용하여 자동 컨버팅 및 비디오 파일 스트리밍
1. S3 버킷 생성
1) 콘솔 내 S3 서비스 접속 후 "버킷 만들기" 클릭
2) 버킷이름(vod-이니셜 등 유니크한 이름) 및 리전 선택 후 나머지 디폴트로 두고 "버킷 만들기" 클릭
3) 생성된 버킷 클릭하여 권한 탭 클릭
4) 스크롤 다운 후 CORS 란에 편집 클릭 후 하기의 XML 입력 후 저장
============================================================
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [],
"MaxAgeSeconds": 3000
}
]
============================================================
2. IAM 역할 생성 (MediaConvert가 S3 및 CloudWatch에 접근할 수 있도록 역할 부여)
1) IAM 서비스 접속 후 네비게이션 페인 내 역할 클릭 후 역할 만들기 클릭
2) MediaConvert 서비스 선택 후 다음:권한 클릭 후 다음:태그 -> 다음:검토 클릭
3) 역할 이름 vod-MediaConvertRole 입력 후 역할 만들기 클릭
4) 생성한 vod-MediaConvertRole를 검색하고 클릭한 후 ARN 복사하여 따로 메모(다음 단계에서 사용)
3. IAM 역할 생성 (Lambda가 Cloudwatch 및 MediaConver에 접근하고 IAM PassRole 할 수 있도록 역할 부여)
1) 위와 동일하게 역할 만들기 클릭 후 Lambda 선택 후 다음:권한 클릭
2) 역할 만들기 페이지에 검색 란에 AWSLambdaBasicExecutionRole 입력 후 체크박스 활성화 후 다음:테그 클릭 후 다음:검토 클릭
3) 역할 이름 VODLambdaRole 로 입력 후 역할 만들기 클릭
4) 생성한 VODLambdaRole 역할 검색하여 클릭 후 인라인 정책 추가 클릭
5) JSON 탭 클릭하여 하기의 JSON 복사 붙여넣기 후 "<ARN for VODMediaConvertRole>"에 이전 메모해둔 vod-MediaConvertRole ARN으로 수정 후 정책 검토 클릭
===========================================================================
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*",
"Effect": "Allow",
"Sid": "Logging"
},
{
"Action": [
"iam:PassRole"
],
"Resource": [
"<ARN for VODMediaConvertRole>"
],
"Effect": "Allow",
"Sid": "PassRole"
},
{
"Action": [
"mediaconvert:*"
],
"Resource": [
"*"
],
"Effect": "Allow",
"Sid": "MediaConvertService"
}
]
}
=========================================================================
6) 정책 이름 VODLambdaPolicy 입력 후 정책 생성 클릭
4. Lambda함수 생성
1) Lambda 서비스 접속 후 대시보드 우측 상단의 함수 생성 클릭
2) 함수 생성 페이지에서 새로작성 선택 후 함수 이름 VodLambdaConvert 입력 후 런타임 Python3.8 선택, 기본 실행 역할 변경 드롭 다운 탭 활성화 후 실행 역할 기존 역할 사용 선택. 기존 역할에서 이전에 생성한 VODLambdaRole 선택 후 함수 생성 클릭
3) 디자이너 창의 트리거 추가 클릭
4) 트리거 구성에 S3 입력하여 선택, 버킷 기존 생성 버킷 선택 후 이벤트 유형 모든 객체 생성 이벤트 선택. 접두사에 inputs/ 입력 후 재귀 호출 관련 인지 체크박스 활성화 후 추가 클릭
5) 나타나는 화면의 구성 탭 선택 후 일반 구성 클릭 후 편집 클릭
6) 기본 설정 편집에서 메모리 필요에 따라 수정 후 제한 시간 2분으로 수정 후 저장
7) 구성 탭의 환경 변수 클릭한 뒤 편집 클릭
8) 환경 변수 편집에서 환경 변수 추가 3번 클릭한 후 하기의 입력 값 입력 후 저장 클릭
Application VOD
DestinationBucket <버킷명>
MediaConvertRole arn:aws:iam::<계정 ID>:role/vod-MediaConvertRole
9) 코드 탭 선택 후 코스 소스 내 lambda_function.py 클릭하여 활성화 한 후 https://s3.amazonaws.com/mediaimmersion/mediaconvert/VodLambdaConvert.py 내 코드 복사 붇여넣기
10) 코드 소스의 File 탭 New File 클릭
11) https://s3.amazonaws.com/mediaimmersion/mediaconvert/job_template.json 내 코드 복사 붙여넣기 후 File 클릭한 후 Save as 클릭
12) 파일 명 job_template.json 입력 후 Save 클릭
13) Deploy 클릭
5. S3 버킷에 파일 생성 후 업로드 파일 업로드
1) S3 서비스 접속하여 생성한 버킷 클릭 후 객체 탭의 폴더 만들기 클릭
2) 폴더 이름 inputs 입력 후 폴더 만들기 클릭
3) 생성한 inputs 파일 클릭한 후 객체 탭의 업로드 클릭하여 해당 비디오 파일 업로드
4) 동일한 버킷에 접속 후 assets/ 폴더이 생성된 것 확인(MediaConvert 통한 컨버팅 완료 파일 있는 폴더)
5) 출력 파일 중 Cloudfront 배포 원하는 오브젝트 선택 후 URI 중 "assets/" 부터 경로 메모 (Cloudfront 배포 생성 시 사용)
6. MediaConvert에 작업 생성된 부분 확인
1) MediaConvert 서비스에 접속하여 네비게이션 페인 내 작업 클릭 후 Lambda 함수로 생성된 작업 확인 후 클릭
2) Lambda 함수로 인해 작업 정의가 모두 된 부분 확인 가능 (어떤 부분이든 수정 원할 경우 Lambda 코드 수정 필요)
7. Cloudfront 배포 생성
1) Cloudfront 서비스 접속 후 네비게이션 페인 내 배포 클릭 후 우측 상단 배포 생성 클릭
2) 원본 도메인에 s3 버킷 선택 후 S3 버킷 엑세스 예, OAI 사용(Cloudfront만 해당 S3에 접근 가능하게 하는 설정) 활성화 후 새 OAI 생성 클릭 후 나타나는 메시지에 생성 클릭. 그리고 버킷 정책의 예, 버킷 정책 업데이트 활성화
3) 기본 캐시 동작 내 뷰어 프로토콜 정책 Redirect HTTP to HTTPS 선택
4) 맨 하단 설정의 대체 도메인 이름에 항목 추가 클릭하여 원하는 CNAME 입력 후 사용자 정의 SSL 인증서 선택 후 기본값 루트 객체에 이전에 메모해둔 오브젝트 URI("assets/"이후)입력. 나머지 모두 디폴트 값으로 나두고 배포 생성 클릭
8. Route53 호스팅 영역에 A 레코드 추가
1) Route53 서비스에 접속하여 좌측 네비게이션 페인 내 호스팅 영역 클릭 후 해당하는 호스팅 영역 클릭
2) 레코드 생성 클릭
3) 단순 라우팅 선택 후 다음 클릭
4) 레코드 구성 페이지의 단순 레코드 정의 클릭
5) 레코드 이름 입력 후 값/트래픽 라우팅 대상 Cloudfront 선택 후 Cloudfront 배포 ID로 시작하는 값 선택 후 단순 레코드 정의 클릭
6) 레코드 생성 클릭
7) 해당 도메인으로 접속 후 비디오 파일 정상 재생 확인