거의 알고리즘 일기장
aws media convert (with terraform) 본문
📖 서문
추석 연휴 이후 바로 백신을 맞아서 토일월화수목금토일 쉬는 엑조디아 발동했다. ( 노린건 아니다. ㅎ.. )
그러다보니 시간이 좀 남아, 회사에서 이야기 나왔던 주제가 생각이 나서 시도해보았다.
주제는 다음과 같다.
1. s3에 영상 업로드가 되면,
2. aws lambda를 이용해서 aws media convert를 켜주어 영상 포맷을 스트리밍이 가능한 형태로 conversion 시킨다.
ㄲ
🗺 계획
⛏ 실습 !!!
처음부터 하려니 막막해서 구글링을 하다보니 개꿀따리 코드를 찾았다!!
( 사용 방법이 잘 적혀있으니 git readme도 같이 참고하길 바란다. )
https://github.com/trackit/aws-workflow-video-on-demand/tree/master/mediaconvert_lambda
1. 사전 준비
aws cli 세팅을 이미 해놓은 상태여야 한다. ( 당연히 aws 상에 cli를 통해서 올리는거니까 해놔야함 )
1) 일반적인 세팅
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-configure-files.html
2) aws-vault 사용 세팅 ( 보안적으로 훨씬 더 뛰어나나, 이 예제는 iam api도 호출하므로 MFA 설정까지 해줘야 하는 번거로움이 있다. )
https://www.44bits.io/ko/post/securing-aws-credentials-with-aws-vault
2. git clone 후, mediaconvert_lambda 안에 있는 job.json, mediaconvert.py를 원하는 설정으로 세팅
내가 필요한 media convert는 원래 코드에서 바꿀점은
1) mp4 변경이 필요 없었고 hls( m3u8 형태 )만 필요했다,
2) apple Hls 해상도나 bitrate도 preset되어 있는 밑의 저 두개를 사용할 예정이었다.
그래서
1) mediaconvert.py의 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 작성
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 에 잘 저장됨을 확인했다.
📚 추가적인 참고 사항
https://techblog.woowahan.com/2646/
https://d2.naver.com/helloworld/7122%EF%BB%BF
aws에서 비교적 간단하게 media convert pipeline을 만들수 있는게 놀랍다. 역시 대감집은 다르다.
만약에 media convert가 다 되었을때의 처리도 해주고 싶다면, cloudwatch? 쪽을 추가적으로 보면 될거 같다.
'web' 카테고리의 다른 글
요즘 쓰는 git commit message convention (0) | 2021.11.27 |
---|---|
custom useAxios hook (0) | 2021.11.11 |
chrome dev tool로 봤을때, 문제가 없는데 layout이 삐뚤빼뚤 나오는 경우 - html 주석버그 (0) | 2021.08.20 |
절대경로 설정하기 (React Native + ts) (0) | 2021.07.21 |
프론트주니어의 개발기록 1 - next.js를 쓰지않고 react ssr 해보기 (0) | 2021.07.13 |