AWS/Media

Media Convert + S3 + Cloudfront 활용하여 자동 컨버팅 및 비디오 파일 스트리밍

hee_story 2021. 10. 1. 17:59

 

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) 해당 도메인으로 접속 후 비디오 파일 정상 재생 확인