거의 알고리즘 일기장

aws media convert (with terraform) 본문

web

aws media convert (with terraform)

건우권 2021. 9. 25. 02:08

📖 서문

추석 연휴 이후 바로 백신을 맞아서 토일월화수목금토일 쉬는 엑조디아 발동했다. ( 노린건 아니다. ㅎ.. )

 

그러다보니 시간이 좀 남아, 회사에서 이야기 나왔던 주제가 생각이 나서 시도해보았다.

주제는 다음과 같다.


1. s3에 영상 업로드가 되면,
2. aws lambda를 이용해서 aws media convert를 켜주어 영상 포맷을 스트리밍이 가능한 형태로 conversion 시킨다. 

 


🗺 계획

구성 시나리오


⛏ 실습 !!!

처음부터 하려니 막막해서 구글링을 하다보니 개꿀따리 코드를 찾았다!! 

( 사용 방법이 잘 적혀있으니 git readme도 같이 참고하길 바란다. )
https://github.com/trackit/aws-workflow-video-on-demand/tree/master/mediaconvert_lambda

 

GitHub - trackit/aws-workflow-video-on-demand: AWS Workflow for video-on-demand with automated API

AWS Workflow for video-on-demand with automated API - GitHub - trackit/aws-workflow-video-on-demand: AWS Workflow for video-on-demand with automated API

github.com


1. 사전 준비

aws cli 세팅을 이미 해놓은 상태여야 한다. ( 당연히 aws 상에 cli를 통해서 올리는거니까 해놔야함 )

 

1) 일반적인 세팅

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-configure-files.html

 

구성 및 자격 증명 파일 설정 - AWS Command Line Interface

이러한 설정은 전적으로 선택 사항입니다. 이러한 설정을 구성하지 않고도 aws s3 이전 명령을 성공적으로 사용할 수 있어야 합니다. 이러한 설정은 성능을 조정하거나 aws s3 명령을 실행 중인 특

docs.aws.amazon.com

 

2) aws-vault 사용 세팅 ( 보안적으로 훨씬 더 뛰어나나, 이 예제는 iam api도 호출하므로 MFA 설정까지 해줘야 하는 번거로움이 있다. )

https://www.44bits.io/ko/post/securing-aws-credentials-with-aws-vault

 

aws-vault 사용법: AWS의 인증 정보 안전하게 사용하기

aws-vault는 99디자인스(99designs)에서 개발한 AWS 인증 정보를 로컬 환경에 안전하게 보관할 수 있도록 도와주는 도구입니다. 운영체제 별로 제공되는 안전한 공간에 인증정보를 저장해 플레인 텍스

www.44bits.io


2. git clone 후, mediaconvert_lambda 안에 있는 job.json, mediaconvert.py를 원하는 설정으로 세팅

내가 필요한 media convert는 원래 코드에서 바꿀점은

 

1) mp4 변경이 필요 없었고 hls( m3u8 형태 )만 필요했다,
2) apple Hls 해상도나 bitrate도 preset되어 있는 밑의 저 두개를 사용할 예정이었다.

media convert에서 미리 정해져 있는 preset

그래서 

 

1) mediaconvert.py의 42번째줄을 없애거나 주석처리

42번째 줄

2) job.json Outputs 수정 및 mp4관련해서 json 지우기

	"Outputs": [
                {
                    "Preset": "System-Avc_16x9_360p_29_97fps_1200kbps",
                    "NameModifier": "_360"
                },
                {
                    "Preset": "System-Avc_16x9_540p_29_97fps_3500kbps",
                    "NameModifier": "_540"
                }
            ],

그 외에는 변경사항 없다. 


3. mediaconvert_lambda 를 zip으로 압축한다.

밑부터는 terraform을 이용한 방법이다. terraform을 이용하지 않을 거라면 aws lambda console로 가서 함수를 만들고 직접 이 코드를 업로드 하는 방식을 이용하면 된다. 이 방법은 따로 설명하지 않겠다.


4. main.tf 작성 

자신의 상황에 맞춰 작성하면 됨, 모르겠으면 git readme 확인


5. terraform init & apply ㄱ 

위에 1번 사전준비에서 1) 일반적인 세팅으로 했다면,

terraform init
terraform apply

2) aws-vault로 했으면,

terraform init
aws-vault exec {세팅한 profile 이름} -- terraform apply

3) aws console에서 lambda가 정상적으로 추가되었는지 확인

람다 함수가 추가됨을 확인


6. 결과

1) { s3 input bucket}/input 에 .mov, .mp4 형태의 파일을 업로드 했더니

영상 파일 업로드

 

2) 밑의 사진처럼 media convert 작업이 진행되는걸 볼수있었고,

 

3) { s3 output bucket }/파일이름/hls 에 잘 저장됨을 확인했다.

s3 output bucket에 conversion된 파일이 추가됨


📚 추가적인 참고 사항

https://techblog.woowahan.com/2646/

 

좌충우돌 Terraform 입문기 | 우아한형제들 기술블로그

{{item.name}} 안녕하세요, 저는 신사업부문의 오지산이라고 합니다. 저희 신사업부문은 배달의민족과는 조금 다른… 시장의 문제를 해결하기 위해 다양한 신규 서비스들이 개발되는 곳입니다. 그

techblog.woowahan.com

https://d2.naver.com/helloworld/7122%EF%BB%BF


aws에서 비교적 간단하게 media convert pipeline을 만들수 있는게 놀랍다. 역시 대감집은 다르다.

만약에 media convert가 다 되었을때의 처리도 해주고 싶다면, cloudwatch? 쪽을 추가적으로 보면 될거 같다.

반응형
Comments