VOD Streaming Server 구축 3 (AWS)

ASHAPPYASIKNOW·2022년 7월 18일
1

AWS

목록 보기
3/6
post-thumbnail

구축 계획

  1. 수동으로 input S3에 mp4 파일을 업로드한다.
  2. Input S3에 mp4 파일이 업로드되면 Event가 trigger 된다.
  3. 미리 만들어 놓은 Lambda function이 실행 되면서 Media Convert에 Job을 생성한다.
  4. Media Convert로 HLS 로 변환하여 output S3에 저장한다.
  5. Output S3에 Cloud Front를 연결한다.
  6. Streaming이 잘 되는지 확인 해 본다.

범위

참고: VOD Streaming Server 구축 1 (AWS)
참고: VOD Streaming Server 구축 2 (AWS)

  1. IAM 설정 생성
  2. Input S3 folder 구성
  3. Lambda function 생성 및 환경 설정 (event trigger)

Lambda Function Role 만들기

Lambda 에서 MediaConvert에 Job을 생성하기 위해서는 아래의 권한이 필요하다.
뭔가 복잡하고 낯설어 보일 수 있으나 설정하고 나면 아무것도 아니기 때문에 순서대로 진행해 보자.

role_mediaconvert 생성하기

IAM > Role > Create role

Step 1. Select trusted entity

Step 2. Add permissions

Next 클릭

Step 3. Name, review, and create

Create role 을 누르면 Role이 생성된다.

role_mediaconvert는 추후에 lambda에서 mediaconvert 에 job을 추가 할 때 사용된다.

role_lambda_vod_execution 생성하기

다시한번 Create role 선택

  1. AWS service 선택
  2. Lambda 선택 (lambda 에서 mediaconver에 job을 생성해야 하기 때문에 선택)
  3. Next버튼 클릭

  1. AWSLambdaBasicExecutionRole 을 검색한 후 선택한다.
  2. Next버튼 클릭

  1. Role name: role_lambda_vod_execution
  2. Create role

role_lambda_vod_execution에 inline 규칙 추가하기

role_lambda_vod_execution을 눌러서 detail page로 들어간다.

Create inline policy를 선택한다.

JSON Tab 으로 변경 한 후

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*",
            "Effect": "Allow",
            "Sid": "Logging"
        },
        {
            "Action": ["iam:PassRole"],
            "Resource": ["이전에 생성한 MediaConvertRole의 ARN"],
            "Effect": "Allow",
            "Sid": "PassRole"
        },
        {
            "Action": ["mediaconvert:*"],
            "Resource": ["*"],
            "Effect": "Allow",
            "Sid": "MediaConvertService"
        },
        {
            "Action": ["s3:*"],
            "Resource": ["*"],
            "Effect": "Allow",
            "Sid": "S3Service"
        }
    ]
}

출처:https://lemontia.tistory.com/1034

ARN은 이전에 만들어 놓은 Role에 Detail page에 있다.

Review Policy 클릭

Create policy버튼 클릭

권한생성 완료!

Lambda Function 생성

Create function

  1. Author from scratch 선택
  2. Function name: create_mediaconvert_job
  3. Runtime: Python 3.9
  4. Use an Existing role
  5. role_lambda_vod_execution 선택 (위에서 생성)

Add trigger (S3)

주의사항
절대로 Input bucket과 Output bucket을 같이 사용해서는 안 된다.
만약 Input bucket과 Output bucket을 같은 bucket으로 설정한 후 All object create events를 trigger로 만들게 되면 File을 하나 올렸지만, 핵폭탄급 요금이 청구될 수 있다.

  1. file을 업로드 한다.
  2. Trigger가 발생 -> 가공 처리 이후에 file을 bucket에 저장한다.
  3. 이 저장행위가 다시 Trigger가 된다. -> 다시 가공 처리 이후에 file을 bucket에 저장한다.
  4. 이 저장행위가 다시 Trigger가 된다. -> 다시 가공 처리 이후에 file을 bucket에 저장한다.
    ...
    무한대로 반복해서 결국 요금폭탄이 발생하게 된다. 절대로 주의해야 한다.

vod 폴더 이하 모든 폴더에 vod 파일이 추가 될 때마다 lambda function이 자동으로 실행된다. (create_mediaconvert_job)

  1. s3/input (Input S3)
  2. All object create events (모든 object가 생성될 때 이벤트 발생)
  3. vod/ (vod/ 이하 모든 폴더가 대상이 된다.)

폴더 구성

개인적으로 dev, qa, prod 이 세 가지로 서비스를 운영할 예정이기 때문에 input s3의 폴더 구조를 아래와 같이 가져감

자 이제부터 s3에 vod/ 폴더에 파일이 올라올 때 mediaconvert에 job을 생성하는 작업을 추가한다.

profile
36.9 It's good time to start something new

0개의 댓글